forked from JustDoPython/python-100-day
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpython_scope.py
98 lines (76 loc) · 1.93 KB
/
python_scope.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import builtins
# 作用域的概述及运用
global_scope = 0 # 全局作用域
# 定义闭包函数中的局部作用域
def outer():
o_count = 1 # 闭包函数外的函数中,相对于函数 inner() 来说 作用域非局部
def inner():
local_scope = 2 # 局部作用域
# 查看模块中引入哪些变量
print('builtins 模块中引入的变量为:%s' %dir(builtins))
# # 其他模块中的变量访问
name1 = 'SuSan'
if('SuSan'.__eq__(name1)):
result = 'I am SuSan,I am from China'
else:
result = 'I am from USA'
print(result)
# 如果将变量定义在函数内部,则外部不能访问
def names():
name2 = 'SuSan'
# if('SuSan'.__eq__(name2)):
result1 = 'I am '+name2 +','+'I am from China'
# else:
result1 = 'I am from USA'
# print(result1)
# 全局变量和局部变量
total = 0 # 这是一个全局变量
# 函数说明
def sum(arg1, arg2):
# 返回2个参数的和."
total = arg1 + arg2 # total在这里是局部变量.
print("函数内是局部变量 : ", total)
return total
# 调用sum函数,传入参数的计算结果显示局部变量
sum(10, 20)
print("函数外是全局变量 : ", total)
# 使用golbal 关键字访问和修改全局变量
num = 1
def fun1():
# 申明访问全局变量
global num # 需要使用 global 关键字声明
# 输出全局变量原始值
print(num)
# 修改全局变量
num = 123
print(num)
# 调用函数
fun1()
# 输出修改后的全局变量值
print(num)
# 使用nonlocal关键字申明变量并修改
# 定义函数
def outer():
# 定义变量
num = 10
# 定义嵌套函数
def inner():
nonlocal num # nonlocal关键字声明,使用函数中变量
# 修改变量值
num = 100
print(num)
inner()
print(num)
outer()
# 特殊情况下
b = 8
def test(b):
b = b * 10
print(b)
test(b)
b = 8
def test():
global b
b = b * 30
print(b)
test()