标签:用处 开发效率 没有 实参 变量作用域 关系 返回值 fun 赋值
function -> 函数,功能
函数就是一个具有特定功能的代码块
函数就是把代码进行封装,以提高代码的重用性,提高开发效率,并且降低了后期的维护成本
def 函数名([参数列表]):
具体功能代码
具体功能代码
。。。。
函数封装完并不会执行,只是把函数定义了而已
如果想使用定义的函数,那么就需要用语法来进行函数的调用
函数名()
函数在定义时,可以在参数列表的位置定义形参
如果函数有形参,那么在函数调用时也需要给定参数
实参将值传递给形参的过程,本质上就是变量赋值操作
函数参数:调用时需要传递的数据.
函数参数大类分为形参和实参:
. 形参意思: 函数定义时的参数
. 实参意思: 函数调用时的参数
形实关系:函数调用时,形参和实参个数需要一一对应
形参种类: 普通参数,默认参数,普通收集参数,命名关键字参数,关键字收集参数
实参种类: 普通实参,关键字实参
(位置参数)普通的参数,接收实参传递的值
位于普通参数后面,具有默认值的参数
语法:(x,y=2) y就是默认参数
1.普通收集参数:专门用于收集多余的普通参数,形成一个新的元组
语法:参数前面加* 例:*args
2.关键字收集参数:用于专门收集多余关键字实参,形成一个新的字典
语法:参数前面加** 例:**kwargs
定义时放在*号后面的参数,调用时强制必须传入指定参数名才能调用
语法:(a,*,x) x是命名关键字参数
如果函数参数中已经有了收集参数,那么收集参数后面的参数即为命名关键字参数
语法:(*args,x,y)
普通参数 -> 默认参数 -> 收集参数 -> 命名关键字参数 -> 关键字收集参数
def func(a,b,c=1,*args,d,**kw)
a,b为普通参数,c是默认参数,args是收集参数,d是命名关键字参数,kw是关键字收集参数
极少出现五种参数同时出现的情况
def func(a,b=2,*,c,d,**kw)
a为普通参数,b是默认参数,c,d是命名关键字参数 ,kw是关键字收集参数
一个函数除来可以完成一定功能之外,还可以按需要返回一些内容
函数中使用 return 关键字来指定返回数据,可以返回任意类型的数据
函数的返回值,会把数据返回到调用处,可以使用变量接收,或其它处理
函数可以分为两类
1。执行过程函数: 函数体内完成一定的功能既可,没有返回值
2。具有返回值的函数: 函数体内完成一定的功能,并且返回一个结果到函数调用处
# 假设有这样一个需求,定义一个函数,完成两个数的计算,并把结果输出
def jia1(n1,n2):
res = n1+n2
print(res)
jia1(2,5)
# 需求改变,定义一个函数,完成两个数的计算,并把结果返回
def jia2(n1,n2):
res = n1+n2
return res
r = jia2(2,4)
print(r)
作用域就是当前起作用,可用的范围区域,变量的有效范围
局部变量
函数内定义的变量,局部变量,在函数外不能使用
全局变量
在函数内部使用 global 直接定义的变量,就是全局变量,函数内外都可以使用
在函数外定义的变量,在函数内使用 global 关键字进行声明,那么也是全局变量
globals() 获取全局数据
locals() 获取当前作用域的数据
def outer():
print(‘this is outer function...‘)
# 在函数内定义的函数,称为 局部函数,函数外无法使用
def inner():
print(‘this is inner function...‘)
inner()
outer()
# inner()
在内函数中如何使用上一层函数中的局部变量?
在内函数中如果想使用外层函数的变量,那么需要使用 nonlocal 关键字 引用
可以引用上一层函数中定义的局部变量,但依然不能提升为全局变量
# 定义一个外层函数
def outer():
# 外函数的局部变量
num = 10
# 内函数,局部函数,在函数的内部定义的函数
def inner():
# nonlocal 关键字在局部函数中使用,
nonlocal num # 可以引用上一层函数中定义的局部变量,但依然不能提升为全局变量
num += 1
print(num)
inner()
outer()
print(num)
函数第一部分归纳完毕,下周总结python的内置函数,下周见~
标签:用处 开发效率 没有 实参 变量作用域 关系 返回值 fun 赋值
原文地址:https://www.cnblogs.com/yzq2333/p/13213351.html