函数:
1.函数返回值:返回值个数=0:返回None
返回值个数=1:返回Object(注意并不是对象地址,而是具体的数值)
返回值的个数>1:把多个返回值放到元组中,最后返回tuple
2.函数参数: 位置参数:位置参数必须在关键字参数的左边
默认参数:靠着参数列表的右边写
关键字参数:不需要考虑参数的顺序问题,通过参数名=值的方式进行数值传递
3. 参数组:
1.函数返回值:返回值个数=0:返回None
返回值个数=1:返回Object(注意并不是对象地址,而是具体的数值)
返回值的个数>1:把多个返回值放到元组中,最后返回tuple
2.函数参数: 位置参数:位置参数必须在关键字参数的左边
默认参数:靠着参数列表的右边写
关键字参数:不需要考虑参数的顺序问题,通过参数名=值的方式进行数值传递
3. 参数组:
*位置参数
def test(x,*args):
print(x,args)
test(1,2,3)#2与3会被打包成元组
test(1,[1,2])#列表会被打包成元组中的一个元素,位置参数如果传递的是元组或是字典,处理方法一致
test(1,*[2,3])#此方法等价于方式一,元组也是一样的操作,但是字典会把对应的key传递给args,组成对应的元组
*关键字参数def test(x,**kwargs):
print(x,kwargs)
test(1,y=2,z=3)#把关键字参数打包成字典,这里面注意函数调用时,位置参数必须在关键字参数的左边
test(1,**{'y':2,'z':3})等价于方式一 *位置参数与关键字参数的混合使用:
def test(x,*args,**kwargs): print(x,args,kwargs)#注意*args只能放中间,如果把它放在第一个位置,则函数调用时,传递的所有实参都会被打包给args,如果放在最后则违背位置参数必须在关键字参数的左边的原则4.函数里面可以嵌套定义函数,在函数内部对全局变量进行修改,必须使用global关键字def A():
global name #修改全局变量的值
name="pzz"
print(name)
name="nan"
A()关键字nonlocal:
def A():
name="pzz1"
def B():
nonlocal name="pzz2" #对于函数嵌套的上一级的变量进行修改
print(name)
B()
A()如果全部变量与局部变量重名,则函数内部优先考虑局部,再考虑上一级,最终到全局。
def A():
name="pzz1"
def B():
name="pzz2"
def C():
print(name)
C()
B()
name="Nan"
A() #打印结果是pzz2
5.前向引用:
运行代码之前的代码会被编译处理,而之后的则不会被编译处理
def A():
print("A...")
B()
A() #运行报错,B未定义。因为运行之后的代码没有被编译,所以会报错
def B():
print("B...")6.直接打印函数名,运行结果是函数在内存中的地址def A():
print("A...")
def B():
print("B...")
return B
b=A() #返回函数B的内存地址
b() #相当于运行函数B,打印:B...
本文详细介绍了Python函数的基础概念,包括函数的返回值、参数类型(如位置参数、默认参数、关键字参数),参数组(如*args和**kwargs的使用),以及函数内嵌套定义函数的方法。此外还介绍了前向引用的概念及注意事项。

被折叠的 条评论
为什么被折叠?



