我想弄清楚这个:
c = 1
def f(n):
print c + n
def g(n):
c = c + n
f(1) # => 2
g(1) # => UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
谢谢!
Gre*_*ill 52
在函数内,默认情况下,分配给的变量将被视为局部变量.要分配给全局变量,请使用以下global语句:
def g(n):
global c
c = c + n
Run Code Online (Sandbox Code Playgroud)
这是Python的一个古怪的领域,从来没有真正与我坐在一起.
iro*_*ggy 12
全局状态是需要避免的,特别是需要改变它.试想,如果g()要简单地采取两个参数,或者f()和g()需要与一个公共类的方法c的实例属性
class A:
c = 1
def f(self, n):
print self.c + n
def g(self, n):
self.c += n
a = A()
a.f(1)
a.g(1)
a.f(1)
Run Code Online (Sandbox Code Playgroud)
输出:
2
3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18322 次 |
| 最近记录: |