PYTHON知识点学习-函数(下)

🌈write in front🌈
🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由 Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠
📝个人主页:Aileen_0v0🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0🧸的PYTHON学习系列专栏——CSDN博客
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本

目录

函数递归概念及例子🍈

1.1递归代码两要素🍉:                                                                           

1.2递归的缺点🍉:

1.3递归的优点🍉:

函数参数🍓

2.1函数参数默认值🍅

2.2默认参数使用的注意事项🍅

2.3函数的关键字参数🍅

函数总结🍭


函数递归概念及例子🍈

函数递归:就是一个函数,自己调用自己

#写一个函数,求 n 的阶乘(n 是正整数)
def f(n):result = 1for i in range (1,n+1):result *= ireturn resultprint(f(5))
#-----------------------------------
#结果:120
#利用递归方法求n的阶乘
#首先先思考
#递推公式:n! => n * (n - 1)!
#结束条件:1! => 1
def f(n):if n == 1:return 1return n * f(n - 1)print(f(5))

递归的代码,虽然很多时候看起来写法很简单,但是执行过程可能会非常复杂!!

下面是利用debug调试的过程:

1.1递归代码两要素🍉:                                                                               

递归代码两要素数学归纳法
1.递归条件1.初始条件
2.递归的递推公式2.递推公式
递归代码两要素可以对比数学归纳法记忆

1.2递归的缺点🍉:

1.执行过程非常复杂,难以理解~ ~

2.递归代码容易出现" 栈溢出 "的情况~  "栈":指的是函数的调用栈

  3.递归代码一般可以转换成等价的循环代码~ ~

     并且,循环的版本通常运行速度要比递归版本有优势~ ~(函数调用也是有开销的)

1.3递归的优点🍉:

代码非常简洁!!尤其是处理一些"问题本身就是通过递归的方式定义的"

数据结构~二叉树~ ~

函数参数🍓

2.1函数参数默认值🍅

python中的函数,可以给形参指定默认值
带有默认值的参数,可以在调用的时候不传参.
def add(x,y):print(f"x = {x}, y = {y}")  #在函数内部加上打印信息方便我们进行调试~ ~return x + yresult = add(10,20)
print(result)

上面的在函数内部加上打印信息方便我们进行调试~ ~

但是,像这种调试信息,希望在正式发布的时候不要出现,只是在调试阶段才有~ ~

所以我们可以给他指定一个默认参数debug=False~

这个形参的默认值就是False

带有默认值的形参 就可以在调用函数的时候,不必传参~

#参数默认值
#python中的函数,可以给形参指定默认值
#带有默认值的参数,可以在调用的时候不传参.
def add(x,y,debug=False):  #指定一个默认参数debug=Falseif debug:print(f"x = {x}, y = {y}")  #在函数内部加上打印信息方便我们进行调试~ ~return x + yresult = add(10,20)
print(result)
#---------------------------
#运行结果:30

我们可以通过手动传参影响这个默认值~

通过这样的默认值,就可以让函数设计更灵活~ ~

2.2默认参数使用的注意事项🍅

Python中要求带有默认值的形参,得在形参列表的后面~ ~

而不能在 前面 / 中间!

就算是多个带有默认参数的形参,这些都得放到后面!!

2.3函数的关键字参数🍅

按照先后顺序来传参~ ~ 

这种传参风格,称为"位置参数"-------->这种方式是各个编程语言中最普遍的传参方式

现在我要介绍的是另一种方式--------->"关键字传参":按照形参的名字来进行传参!

#关键字传参
def test(x,y):print(f"x={x}")print(f"x={y}")test(x=10,y=20)
test(y=100,x=200)

通过上面的代码,可以非常明显地告诉程序🐒,你的参数要传给谁!!

另外可以无视形参和实参的顺序!!

此外,位置参数 和 关键字参数 还能混着用,只不过混着用的时候要求,位置参数在前,关键字参数在后~ ~

关键字参数,一般也是搭配着默认参数来使用的~

一个函数可以提供很多参数,来实现对这个函数内部功能做出一些调整设定~ ~

为降低调用者的使用成本,就可以把大部分参数设定出默认值~

当调用者需要调整其中一部分参数时,就可以搭配关键字参数来进行操作~ ~

函数总结🍭


🍒函数的知识点就分享到这里啦~🍒

🍒喜欢就一键三连支持一下吧~🍒

🍒谢谢家人们!🍒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/117246.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab图像处理-幂次变换

幂次变换 如下图所示的幂次变换函数曲线图&#xff1a; 当γ <1时&#xff0c;效果和对数变换相似&#xff0c;放大暗处细节&#xff0c;压缩亮处细节&#xff0c;随着数值减少&#xff0c;效果越强。 当γ >1时&#xff0c;放大亮处细节&#xff0c;压缩暗处细节&…

大语言模型之七- Llama-2单GPU微调SFT

&#xff08;T4 16G&#xff09;模型预训练colab脚本在github主页面。详见Finetuning_LLama_2_0_on_Colab_with_1_GPU.ipynb 在上一篇博客提到两种改进预训练模型性能的方法Retrieval-Augmented Generation (RAG) 或者 finetuning。本篇博客过一下模型微调。 微调&#xff1a…

YOLOV8模型使用-检测-物体追踪

这个最新的物体检测模型&#xff0c;很厉害的样子&#xff0c;还有物体追踪的功能。 有官方的Python代码&#xff0c;直接上手试试就好&#xff0c;至于理论&#xff0c;有想研究在看论文了╮(╯_╰)╭ 简单介绍 YOLOv8 中可用的模型 YOLOv8 模型的每个类别中有五个模型用于检…

Linux常用命令——cupsenable命令

在线Linux命令查询工具 cupsenable 启动指定的打印机 补充说明 cupsenable命令用于启动指定的打印机。 语法 cupsenable(选项)(参数)选项 -E&#xff1a;当连接到服务器时强制使用加密&#xff1b; -U&#xff1a;指定连接服务器时使用的用户名&#xff1b; -u&#xff…

VS + QT 封装带UI界面的DLL

一、创建编译DLL的项目 1.新建Qt Class Liabrary 2.新建项目&#xff0c;选择Qt Widgets Class 3.新建C类&#xff0c;可以在此类里面写算法函数用于调用。 4.下面是添加完Qt窗体类和C类之后的项目截图 5.修改头文件并编译 将uidemo_global.h中的ifdef内容复制到dialog.h上…

Python库-coverage测试覆盖率

Coverage.py 是用于测量Python程序代码覆盖率的工具。它 监视程序&#xff0c;注意代码的哪些部分已执行&#xff0c;然后 分析源以识别可以执行但未执行的代码。 覆盖率测量通常用于衡量测试的有效性。它 可以显示测试正在执行代码的哪些部分&#xff0c;以及哪些部分是 不。…

C++:类和对象(下)

目录 1. 再谈构造函数 1.1构造函数题赋值 1.2初始化列表 初始化列表有什么用呢? 1.3 explicit关键字 2. Static成员 2.1概念 2.2特性 3. 友元 3.1友元函数 3.2友元类 4. 内部类(了解) 5.匿名对象 6.拷贝对象时的一些编译器优化 学习目标 1. 再谈构造函数2. Stat…

在访问一个网页时弹出的浏览器窗口,如何用selenium 网页自动化解决?

相信大家在使用selenium做网页自动化时&#xff0c;会遇到如下这样的一个场景&#xff1a; 在你使用get访问某一个网址时&#xff0c;会在页面中弹出如上图所示的弹出框。 首先想到是利用Alert类来处理它。 然而&#xff0c;很不幸&#xff0c;Alert类处理的结果就是没有结果…

Hive-安装与配置(1)

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

OpenCV(十):图像缩放、翻转、拼接的介绍与使用

目录 &#xff08;1&#xff09;图像缩放&#xff1a;resize() &#xff08;2&#xff09;图像翻转&#xff1a; flip() &#xff08;3&#xff09;图像拼接&#xff1a;hconcat() 和vconcat() &#xff08;1&#xff09;图像缩放&#xff1a;resize() 使用 cv2.resize() 函…

leetcode 1022.从根到叶的二进制数之和

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers/description/ 代码&#xff1a; class Solution { public:int sum (TreeNode* root , int num 0) {if (root nullptr) {return 0;}int cur num r…

【数学建模竞赛】各类题型及解题方案

评价类赛题建模流程及总结 建模步骤 建立评价指标->评价体系->同向化处理&#xff08;都越多越好或越少越少&#xff09;->指标无量纲处理 ->权重-> 主客观->合成 主客观评价问题的区别 主客观概念主要是在指标定权时来划分的。主观评价与客观评价的区别…

QUdpSocket Class

继承自 QAbstractSocket 类 QUdpSocket类提供UDP套接字。 UDP(用户数据报协议)是一种轻量级、不可靠、面向数据报、无连接的协议。它可以在可靠性不重要的情况下使用。QUdpSocket是QAbstractSocket的一个子类&#xff0c;它允许您发送和接收UDP数据报。 使用这个类最常见的方法…

一文1800字从0到1使用Python Flask实战构建Web应用

Python Flask是一个轻量级的Web框架&#xff0c;它简单易用、灵活性高&#xff0c;适用于构建各种规模的Web应用。本文将介绍如何使用Python Flask框架来实战构建一个简单的Web应用&#xff0c;并展示其基本功能和特性。 第一部分&#xff1a;搭建开发环境 在开始之前我们需要…

docker部署nginx,部署springboot项目,并实现访问

一、先部署springboot项目 1、安装docker&#xff1a; yum install docker -y 2、启动docker&#xff1a; service docker start 重启&#xff1a; service docker restart 3、查看版本&#xff1a; docker -v 4、使设置docker.service生效&#xff08;路径&#xff1a;…

游戏思考30(补充版):关于逆水寒铁牢关副本、白石副本和技能的一些注释(2023/0902)

前期介绍 我是一名逆水寒的玩家&#xff0c;做一些游戏的笔记当作攻略记录下来&#xff0c;荣光不朽-帝霸来源视频连接 传送门 一、旧版铁牢关&#xff08;非逆水寒老兵服&#xff09; &#xff08;1&#xff09;老一&#xff1a;巨鹰 1&#xff09;机制一&#xff1a;三阵风…

Bert和LSTM:情绪分类中的表现

一、说明 这篇文章的目的是评估和比较 2 种深度学习算法&#xff08;BERT 和 LSTM&#xff09;在情感分析中进行二元分类的性能。评估将侧重于两个关键指标&#xff1a;准确性&#xff08;衡量整体分类性能&#xff09;和训练时间&#xff08;评估每种算法的效率&#xff09;。…

TDesign在按钮上加入图标组件

在实际开发中 我们经常会遇到例如 添加或者查询 我们需要在按钮上加入图标的操作 TDesign自然也有预备这样的操作 首先我们打开文档看到图标 例如 我们先用某些图标 就可以点开下面的代码 可以看到 我们的图标大部分都是直接用tdesign-icons-vue 导入他的组件就可以了 而我…

LabVIEW计算测量路径输出端随机变量的概率分布密度

LabVIEW计算测量路径输出端随机变量的概率分布密度 今天&#xff0c;开发算法和软件来解决计量综合的问题&#xff0c;即为特定问题寻找最佳测量算法。提出了算法支持&#xff0c;以便从计量上综合测量路径并确定所开发测量仪器的测量误差。测量路径由串联的几个块组成&#x…

Flutter启动页

效果图 import dart:async; import package:flutter/cupertino.dart; import package:flutter/material.dart; import jumpPage.dart;class TransitPage extends StatefulWidget {const TransitPage({super.key});overrideState<TransitPage> createState() > _Trans…