Lea*_*ner 2 python scope global local
我正在学习Python,只是有这个问题.它可能没有实际价值,我问这个可能是因为迂腐的好奇心.
我有一个功能:
def f():
x = 12 #this is a local variable
global x #this is a global I declared before
x = 14 #changes global x
<How can I return the local x?>
Run Code Online (Sandbox Code Playgroud)
我知道这很难看,我确实得到了一个语法警告.只是想知道如何"取回"我的局部变量.
谢谢大家.
您的代码没有按照您的想法进行,并且没有办法根据您描述的内容进行更改.你不能"恢复"什么globals,因为它在运行时没有影响.
该global关键字在解释编译时所以在第一线f(),您可以设置x = 12这是改变全球x因为编译器决定了x是指x在全局命名空间在整个功能,而不仅仅是后global声明.
您可以轻松测试:
>>> def g():
... x = 12
... y = 13
... global x
... print "locals:",locals()
...
<stdin>:4: SyntaxWarning: name 'x' is assigned to before global declaration
>>> g()
locals: {'y': 13}
Run Code Online (Sandbox Code Playgroud)
该locals()函数为我们提供了本地命名空间的视图,我们可以看到其中没有x.
global声明中列出的名称不得在该语句之前的文本中使用相同的代码块global.
global语句中列出的名称不得定义为形式参数或for循环控制目标,class定义,函数定义或import语句.当前的实现并没有强制执行后两个限制,但是程序不应该滥用这种自由,因为未来的实现可能会强制执行它们或者默默地改变程序的含义.
只需给局部变量一个不同的名称.
| 归档时间: |
|
| 查看次数: |
1529 次 |
| 最近记录: |