关键字 global
global
关键字主要目的是为了在函数中使用全局变量。1
2
3
4
5
6
7
8
9
10
11
12
13
14count = 10
def modify_count():
temp_count = 20
print('local variable: ', temp_count)
global count
print('global variable: ', count)
count = 100
print('after modified: ', count)
return
print('before modify_count(): ', count)
modify_count()
print('after modify_count(): ', count)
输入结果:1
2
3
4
5
6
7before modify_count(): 10
local variable: 20
global variable: 10
after modified: 100
after modify_count(): 100
Process finished with exit code 0
从代码中可以看到,,如果要在函数modify_count()
中使用全局变量count
,那么需要使用global
关键字修饰。
同时,函数内部对count
的修改,将影响到函数外面count
的值。
if __name__ == '__main__'
说明
因为在 Python 中,一个.py
文件就是一个模块,模块中一般写了很多函数供其他模块使用。但我们需要测试模块中函数的正确性,这时候就需要用到 if __name__ == '__main__'
.
__name__
是每个模块的一个属性名,如果我们需要在当前模块中编写测试代码,一般情况下,我们是将测试代码放在 if __name__ == '__main__'
这条判断语句下面,因为如果是直接运行当前模块,那么__name__
的值就是__main__
,条件判断下面的测试代码将会被执行。
如果有另外一个模块module_2.py
引用了当前模块module_1.py
,那么当我们运行module_2.py
时,module_1.py
中的__name__
的值将变成module_2
,即引用了module_1
这个模块的模块名。那这时module_1
中的if判断
将不满足,也就不会执行测试代码,module_2
也就只是导入了module_1
中的函数,符合我们的期望。
np.random.seed()
说明
seed(int)
接收一个整数做为生成随机数的算法的参数。如果接收到的整数值相同,那么产生的随机数也相同。
代码1
2
3
4
5
6import numpy as np
num = 0
while num < 5:
np.random.seed(5)
print(np.random.random())
num += 1
输出结果1
2
3
4
50.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
但是设置的seed()
的值只生效一次,下次使用random()
函数如果不是上次的seed()
值,那么将会产生不同的随机数。
代码1
2
3
4
5
6import numpy as np
num = 0
np.random.seed(5)
while num < 5:
print(np.random.random())
num += 1
输出结果1
2
3
4
50.22199317108973948
0.8707323061773764
0.20671915533942642
0.9186109079379216
0.48841118879482914
从结果可以看到,第一次输出的random()
值,由于和上面代码一样设置了seed(5)
,所以第一行结果相同;但是后面4次循环由于没有继续设置seed()
,因而产生的随机数不同。