JJ *_*eck 10 python global-variables local-variables
为什么这段代码有效:
var = 0
def func(num):
print num
var = 1
if num != 0:
func(num-1)
func(10)
Run Code Online (Sandbox Code Playgroud)
但是这个给出了"赋值前引用的局部变量'var'错误:
var = 0
def func(num):
print num
var = var
if num != 0:
func(num-1)
func(10)
Run Code Online (Sandbox Code Playgroud)
因为在第一个代码中,您创建了一个局部变量var并使用了它的值,而在第二个代码中,您使用的是局部变量var,而没有定义它.
所以,如果你想让你的第二个功能工作,你需要声明: -
global var
Run Code Online (Sandbox Code Playgroud)
在使用之前的功能var.
def func(num):
print num
var = 1 <-- # You create a local variable
if num != 0:
func(num-1)
Run Code Online (Sandbox Code Playgroud)
而在此代码中:
def func(num):
print num
var = var <--- # You are using the local variable on RHS without defining it
if num != 0:
func(num-1)
Run Code Online (Sandbox Code Playgroud)
更新: -
但是,根据@Tim的评论,你不应该global在你的函数中使用变量.而是在使用变量之前对变量进行定义,以便将其用于local scope.通常,您应该尝试将limit变量的范围local,甚至local命名空间limit中的局部变量的范围,因为这样您的代码将更容易理解.
增加变量范围的次数越多,外部源使用它的可能性就越大,不需要使用它.
如果var = ...函数中有任何位置,则名称"var"将被视为整个函数的局部变量,无论该赋值发生在何处.这意味着var函数中的所有出现都将在局部作用域中解析,因此右侧会var = var导致引用之前的赋值错误,因为var尚未在函数的作用域中初始化.
| 归档时间: |
|
| 查看次数: |
34360 次 |
| 最近记录: |