20190902学习日志(全局变量及不定长参数)
程序员文章站
2022-03-04 21:45:46
...
- 温习知识点:全局变量和局部变量。
关于全局变量与局部变量
在函数的内部使用一个变量
遵循一个规则: 先在函数内部找 找到直接使用 如果找不到到函数外部找 如果还是找不到 就报错(由内到外)
函数内部对全局变量的值进行修改 global
标识下函数内部的num不是一个局部变量 而是对全局变量重新赋值
可以对全局变量的值进行修改
#关于全局变量
a=0
def A():
global a #将 A 函数内的 a 声明为全局变量
a +=1 #如果不声明,系统⽆法判断第二个 a 是全 的还是局部的,导致程序运行报错 。
print(a)
A()
#当函数内外部都有相同的变量(名)存在时,代码执行的时候会优先选择函数内部定义的变量进行调用。只有当内部变量也是用global声明时,才能调用正确。
[OUT]2
num = 10
def my_func2():
global num
num = 20 #优先使用局部变量
print(num)
def my_func1():
print(num)#调用全局变量
print(num)
my_func1()
print(num)
my_func2()
print(num)
------------------------
[OUT]
10
10
10
20
20
- 不定长参数
https://blog.csdn.net/Panda996/article/details/84787952
参照这篇文章学习
'*'是列表, '**'是字典
A=[22,33,44]
B={"name":"wang han","age":33,"gender":"boy","job":"Manager"}
def test(a,*args,**kwargs):
print("a=%s" %a)
print("args:")
for each in args:
print(each)
print("kwargs:")
for each in kwargs:
print(each)
test(1,*A,**B) # 传参时,先将A,B拆包,一个*拆列表,两个**拆字典
[OUT]
a=1
args:
22
33
44
kwargs:
name
age
gender
job