标签:*args glob 全局 没有 lan 类型 无法 ffffff 必须
def test(a,b): print(a,b) test(1,2)
a,b为形参 1,2为实参 形参只有在被调用时才分配内存,在调用结束时即刻释放所分配的内存,因此形参只有在函数内部有效
①位置参数,必须一一对应,缺一不行多一也不行
test(1,2,3)
②关键字参数,无须一一对应,缺一不行多一也不行
test(y=1,x=3,z=4)
③默认参数,可传可不传
def test(a,b,c=1): print(a,b,c) test(1,2)
结果:1 2 1
④参数组
def test(x,*args,**kwargs): print(x) print(args) print(kwargs) test(1,2,3,4,5,a = 1,b = 2) test(1,*[2,3,4],**{‘a‘:1})
结果:1
(2, 3, 4, 5)
{‘a‘: 1, ‘b‘: 2}
1
(2, 3, 4)
{‘a‘: 1}
大原则:位置参数必须在关键字参数的左边,*args就是把多余的位置参数放在一个元组里,**kwargs就是把关键字参数放在一个字典里
name = ‘xulan‘ //全局变量 def test(): print(name) test()
结果:xulan
name = ‘xulan‘ def test(): name = ‘aaa‘ //局部变量 print(name) test()
结果:aaa
name = ‘xulan‘ def test(): name = ‘aaa‘ print(name) test() print(name)
结果:aaa
xulan
name = [‘a‘,‘b‘] def test(): name.append(‘c‘) print(name) test() print(name)
结果:[‘a‘, ‘b‘, ‘c‘]
[‘a‘, ‘b‘, ‘c‘]
name = [‘a‘,‘b‘] def test(): global name name = 123 print(name) test() print(name)
结果:123
123
NAME = ‘ABC‘ #1 def a(): name = ‘a‘ #3 print(name) #4 def b(): name = ‘b‘ #6 print(name) #7 b() #5 print(name) #8 a() #2
结果: a b a
name = ‘ABC‘ def a(): name = ‘a‘ def b(): global name name = ‘b‘ b() print(name) ---- a,这里不是b,b()函数改变的是全局变量,这里还是a()函数的局部变量name = ‘a‘
print(name) ---- ABC
a()
print(name) ---- b
结果:ABC
a
b
name = ‘ABC‘ def a(): name = ‘a‘ def b(): nonlocal name name = ‘b‘ b() print(name) ----b,a()函数中的局部变量被b()函数修改 print(name) ---- ABC a() print(name) ---- ABC,全局变量并未修改
结果:ABC
b
ABC
标签:*args glob 全局 没有 lan 类型 无法 ffffff 必须
原文地址:https://www.cnblogs.com/xulan0922/p/9136647.html