问:
如何在函数内部创建或使用全局变量?
如何在其他函数内部使用一个在某个函数中定义的全局变量?
答:
你可以在其他函数中使用全局变量,只要在每个给它赋值的函数中声明它为 global 变量:
代码语言:python代码运行次数:0复制globvar = 0
def set_globvar_to_one():
global globvar # 需要修改 globvar 的全局副本
globvar = 1
def print_globvar():
print(globvar) # 无需声明全局变量即可读取 globvar 的值
set_globvar_to_one()
print_globvar() # 打印 1
由于不清楚函数中的语句 globvar = 1
是在创建局部变量还是在改变全局变量,Python 默认创建局部变量,并让你明确地使用 global
关键字选择另一种行为。
官方文档中写道:
global语句在整个当前代码块中都有效。这意味着列出的标识符应被解释为全局变量。如果没有global关键字,将无法对全局变量进行赋值,尽管自由变量可以在未声明为全局的情况下引用全局变量。
在global语句中列出的名称,在该global语句之前的同一文本代码块中不应被使用。
在global语句中列出的名称,不能定义为形式参数,也不能定义为with语句或except子句中的目标,也不能在for目标列表、类定义、函数定义、import语句或变量注释中定义。
参考文档:
- stackoverflow question 423379
- https://docs.python.org/3/reference/simple_stmts.html#grammar-token-python-grammar-global_stmt
相关阅读:
- Python中如何通过引用传递变量
- 如何将python列表拆分为大小相等的块
- python可变对象和不可变对象