python02_函数(python函数csdn)
off999 2024-10-18 08:00 22 浏览 0 评论
一、函数的作用
- 可以具体完成某个功能
- 可以重复使用(函数就是存储运行过程)
二、函数的定义
关键字 def
def 函数名(参数1,参数2,参数3):
函数体
return 表达式
下面是一个计算的简单函数,名为add():
def add():
a = 1 + 6 * 4
b = a + 4
print(b)
add()
- 使用关键字def来告诉Python要定义一个函数
- 向Python指出了函数名,函数名为add():,定义以冒号结尾
- def add():后面的所有缩进行构成了函数体,描述了函数是做什么的
- 函数要先定义,才能调用
- 函数的调用必须加括号
要使用这个函数,可调用它。函数调用让Python执行函数的代码,由于add()函数没有指定任何参数,所以要调用函数,直接指定函数名即可。
三、函数的类型
1、函数的位置参数
可以通过函数名后面的括号传递参数,下面是一个带有位置参数的函数,名为run_cases():
def run_cases(num):
for case in range(num):
print(f'正在执行第{}条用例')
# 调用函数传入的参数其实就是去给函数定义的时候的变量去赋值
run_cases(10)
设置位置参数的原则:
- 函数当中存储多行代码:观察哪些数据会变化,则把它作为参数
关于函数的参数传递,需要注意如下几点:
- 调用函数传递的参数个数一定要跟函数定义的参数个数一致,位置要保持一致,顺序要保持一致,否则会报错
- 注意函数体里面参数的类型,要输入正确的参数类型,否则会报错
- 函数的形式参数和实际参数要配对,一一对应
- 函数调用后,如果有变量,那其实就是给变量赋值
形式参数与实际参数的区别:
- 形式参数:函数定义的时候的参数,就是个变量
- 实际参数:函数调用的时候传入的参数,就是个值
2、函数的关键字参数
关键字参数指的是在调用具有参数默认值的函数时,使用参数的关键字来指定为哪个参数赋值。下面是一个带有关键字参数的函数,名为run_cases():
def run_cases(a,b,c):
for case in range(a):
print(f'正在执行第{}条用例')
print(b + c)
run_cases(a=5,c=3,b=4)
关键字参数的作用:
- 在传实际参数的时候,即时说明实际参数的意义
位置参数和关键字参数的混合时的注意点:
- 位置参数一定要在关键字参数的前面,避免冲突
- 不能对一个参数进行多次赋值
- 不能使用未知关键字参数
3、函数的默认参数
默认参数,在定义函数时给予默认值,调用函数时不需要给予默认参数。
def 函数名(...,形参名,形参名=默认值)
代码块
注意??
- 在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
def run_cases(a,b,c=3)
for case in range(a):
print(f'正在执行第{case}条用例')
print(b+c)
# 不给c传实际参数
# 默认参数的作用:可以不传参数
run_cases(1,4)
4、函数的动态参数
预先不知道函数需要接受多少个实参,所以Python中有一个动态参数的概念,随便你传递多少个的参数给函数,它都全盘接受,并在函数体内做进一步处理。
def add(*args):
print(args)
add(1,2,3,4)
打印出来的结果都是元组类型,那么无论你传递多少个参数进来,它都会把这些参数存储到一个元组里面。比如可以去计算任意个数数字的总和:
def add(*args):
sum = 0
for item in args:
sum += item
print(sum)
add(1,2,3,4)
大家应该充分体验到了动态参数带来的便利,当我们面对不知道要传递多少个参数的函数时,就可以利用动态参数这个用法。
5、带有关键字的动态参数
带有关键字的动态参数,与普通动态参数的区别就是:带有关键字,且必须指定关键字,否则识别不了。
def run(a,**b):
# b 就是把剩下的关键字参数全部都放到一起(字典)
print(a)
print(b)
run(3,H='fuyao',Z='zhishang')
传入的带有key值的参数,都被转成了字典,所以当你传入的值不确定个数的时候又要组成字典,那么我们就可以用这种形式去做处理。
6、位置参数、默认参数、动态参数、关键字动态参数的混合使用
def add(a,b=4,c=5,*args,**kwargs):
print('a+b+c的结果是:',a+b+c)
sum = 0
# args 就是把剩下的位置参数全部都放到一起(元组)
for item in args:
sum += item
print('动态参数的累加结果是:',sum)
# kwargs 就是把剩下的关键字参数全部都放到一起(字典)
print('关键字动态参数是:',kwargs)
# 调用函数
add(1,2,3,4,5,6,x=1,y=2)
根据传递的参数,我们可以看到是优先处理位置参数,然后剩余的参数传递给args,带有关键字的参数传给kwargs。
7、函数的拆包
然而现实中,自动化测试用例中有很多数据(url、方法、参数等),存那么多变量不太现实,那我们可以将多个数据存在一个变量中,此时就会用到拆包了。
1)*args:把元组中的数据进行拆包,也就是把元组中的数据拆成单个数据。
def run(a,b,c):
print(a)
print(b)
print(c)
args = [6,7,8]
# *args 是把所有的列表/元组元素拆分,脱衣服
run(*args)
2)**kwargs:用来接收key=value这种类型的命名参数,把字典中的数据进行拆包。
def run(a,b,c):
print(a)
print(b)
print(c)
# 关键字参数调用
kwargs = {"a":6,"b":7,"c":8}
# **是把字典转化成关键字参数的
run(**kwargs)
8、函数的返回值
上面我们写的函数,调用函数的结果都直接输出在控制台,其实并非所有的函数都会直接输出在控制台,如果我们要拿到这个函数的运行结果,那么就需要用return语句,将函数的运行结果返回来,由你去做进一步的处理。
def run_cases(a=1,b=3,c=3):
for case in range(a):
print(f'正在执行第{case}条用例')
print(b + c)
return 5
# 不会执行下面这条语句
print('函数执行完了吗')
print(run_cases())
返回值需要注意:
- 如果你想拿到函数的运行结果,那么必须用return语句。
- return后面的语句,都不会再执行,可以自己去尝试下。
9、函数的局部变量和全局变量
Python中的全局变量与局部变量的区别:全局变量与局部变量两者的本质区别就是在于作用域。
全局变量是在整个py文件中声明,全局范围内都可以访问;局部变量是在某个函数中声明,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就会报错。
一般全局变量会用大写字母来标志,如果是局部变量,就会用小写字母来标志。
- 全局变量在函数内部和外部都可以调用,局部变量只能在函数内调用,否则会报错。
A = 66 # 全局变量
def add():
a = 100 # 局部变量
print(a+A)
add() # 打印结果是166
print(A) # 打印结果是66
print(a) # 报错:NameError:name 'a' is not defined
- 函数的外部无法直接获取局部变量,可以间接获取,通过return(返回值)。
a = 1 # 全局变量
def run():
b = 2 # 局部变量
print(b)
return b
print(a)
run()
- 如果全局变量和局部变量不一样,那么会优先调用局部变量。
A = 66 # 全局变量
def add():
a = 100 # 局部变量
print(A+A)
add() # 打印结果是200
print(A) # 打印结果是66
- 如果想在函数内部改变全局变量的值,那么在全局变量之前加global关键字。
A = 66 # 全局变量
def add():
global A
A = 100 # 局部变量
print(A+A)
add() # 打印结果是200
print(A) # 打印结果是100
- 如果全局变量是列表类型,那么我们可以通过append等列表方法去对列表进行修改,否则修改不成功。
list_1 = ['hello',20]
def add():
list_1.append(99)
print(list_1)
add() # 打印结果是['hello',20,99]
print(list_1) # 打印结果是['hello',20,99]
10、内部函数
内置函数:Python官方自带的函数,不需要自己定义。
- eval() 函数用来执行一个字符串表达式,并返回表达式的值。
可看以下示例:对表达式的结果进行计算,返回计算后的值
a = "1 + 5 + 3"
print(eval(a)) # 脱掉字符串左右两边的衣服
将输入的字符串转为对应的数据类型,列表、元组、字典等数据类型都可以使用这种方式输入
response = '{"username":"sun","age":16}'
print(type(response))
a = eval(response)
print(type(a))
- sum() 方法对序列进行求和计算,并返回计算结果。
a = sum([3,4,5,6])
print(a)
相关推荐
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
-
在日常开发中,时间处理是绕不开的一块,比如:生成时间戳比较两个时间差转换为可读格式接口传参/前端展示/日志记录今天我们就用一个案例+代码+思维导图,带你完全搞定datetime模块的用法!...
- 字节跳动!2023全套Python入门笔记合集
-
学完python出来,已经工作3年啦,最近有很多小伙伴问我,学习python有什么用其实能做的有很多可以提高工作效率增强逻辑思维还能做爬虫网站数据分析等等!!最近也是整理了很多适合零基...
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
-
前言Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。然而,设置数据、参数、图形和绘图在每次执行新项目时都可能变得非常混乱和繁琐。而且由于应用不同,我们不知道选择哪一个图...
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
-
一、跳转语句的使命当程序需要提前结束循环或跳过特定迭代时,break和continue就是你的代码急刹按钮和跳步指令。就像在迷宫探险中:break=发现出口立即离开continue=跳过陷阱继续前进二...
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(24)Python中的数据类”欢迎您的访问。Shareinterest,...
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
-
分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来文章“刘心向学(25)Python中的虚拟环境”欢迎您的访问。Shareinte...
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
-
分享乐趣,传播快乐,增长见识,留下美好。亲爱的您,这里是LearingYard学苑!今天小编为大家带来“Python中的wordcloud库学习介绍”欢迎您的访问!Sharethefun,...
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
-
机器之能报道编辑:Cardinal以大模型、AIGC为代表的人工智能浪潮已经在悄然改变着我们生活及工作方式,但绝大部分人依然不知道该如何使用。因此,我们推出了「AI在用」专栏,通过直观、有趣且简洁的人...
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
-
最近基于Deepseek+PythonWeb技术开发了一个AI对话自动生成思维导图的应用,用来展示下如何基于低门槛的Python相关技术栈,高效结合deepseek实现从应用场景到实际应用的快速落地...
- 10幅思维导图告诉你 - Python 核心知识体系
-
首先,按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象编程;接着,结合这些思维导图主要参考的...
- Python基础核心思维导图,让你轻松入门
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- Python基础核心思维导图,学会事半功倍
-
Python基础核心思维导图【高清图文末获取】学习路线图就给大家看到这里了,需要的小伙伴下方获取获取方式看下方图片...
- 硬核!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
- Python学习知识思维导图(高效学习)
-
Python学习知识思维导图python基础知识python数据类型条件循环列表元组字典集合字符串序列函数面向对象编程模块错误异常文件对象#python##python自学##编程#...
- 别找了!288页Python核心知识笔记(附思维导图,建议收藏)
-
今天就给大家分享一份288页Python核心知识笔记,相较于部分朋友乱糟糟的笔记,这份笔记更够系统地总结相关知识,巩固Python知识体系。文末获取完整版PDF该笔记学习思维导图:目录内容展示【领取方...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 每天一个 Python 库:datetime 模块全攻略,时间操作太丝滑!
- 字节跳动!2023全套Python入门笔记合集
- 为什么你觉得Matplotlib用起来困难?因为你还没看过这个思维导图
- Python新手必看!30分钟搞懂break/continue(附5个实战案例)
- 刘心向学(24)Python中的数据类(python中5种简单的数据类型)
- 刘心向学(25)Python中的虚拟环境(python虚拟环境安装和配置)
- 栋察宇宙(八):Python 中的 wordcloud 库学习介绍
- AI在用|ChatGPT、Claude 3助攻,1分钟GET高颜值思维导图
- 使用DeepSeek + Python开发AI思维导图应用,非常强!
- 10幅思维导图告诉你 - Python 核心知识体系
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)