第76课时: 变量的作用域 全局变量 局部变量 栈帧内存分析讲解
变量的作用域(全局变量和局部变量):
全局变量;
1 在函数之外的变量,作用域为定义的模块,从模块开始到模块结束。
2全局变量一般作为常量使用
4在函数内部要改变全局变量的值要用global声明一下
局部变量;
1 在函数里面定义。(在函数内部),函数执行完就没有了
2 局部变量效率高于全局变量
3如果局部变量和全局变量同名,那么优先使用局部变量。不使用全局变脸
测试全局变量、局部变量。
a=3
a就是全局变量。
def tt01():
b=1
print(b)
tt01()
1
可以看到打印出1
def tt01():
b=1
print(b)
print(b)
报错!!!!!!!
B为全局变量,在外部不能使用。
a=4
def tt01():
b=1
print(b)
a=300
print(a)
tt01()
1
300
优先考虑a为局部变量
a=4
def tt01():
b=1
print(b)
print(a)
tt01()
1
4
这里a为全局变量,由于局部变量里没有全局变量
Global声明全局变量:
a=4
def tt01():
global a
a=400
print(a)
tt01()
print(a)
400
400
在函数中声明,函数中的a是全局变量 global a 。然后你可以发现,全局变量a也变为了400
打印局部变量、全局变量
a=4
def tt01():
a=300
b=4
print(locals())
print(globals())
tt01()
{‘a’: 300, ‘b’: 4}
{‘name’: ‘main’, ‘doc’:
‘n@author: 11038n@file: test.pyn@time: 2020/06/30n@desc:n’, ‘package’:
None, ‘loader’: <_frozen_importlib_external.SourceFileLoader object at
0x000002440EBD1CC0>, ‘spec’: None, ‘annotations’: {}, ‘builtins’:
<module ‘builtins’ (built-in)>, ‘file’:
‘D:/PycharmProjects/MyTest/test.py’, ‘cached’: None, ‘a’: 4, ‘tt01’:
<function tt01 at 0x000002440EE9C1E0>}
可以看到函数里面的局部变量为a、b 全局变量有一大堆
a=4
def tt01():
global a
a=300
b=4
print(locals())
tt01()
{‘b’: 4}
可以看到局部变量就只有b一个了。
最后
以上就是善良裙子最近收集整理的关于拜师——python基础入门—第6大节课—函数: 变量的作用域 全局变量 局部变量 栈帧内存分析讲解——day26第76课时: 变量的作用域 全局变量 局部变量 栈帧内存分析讲解的全部内容,更多相关拜师——python基础入门—第6大节课—函数:内容请搜索靠谱客的其他文章。
发表评论 取消回复