我想弄清楚这个:
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)
谢谢!
可能重复:
在创建它们的函数之外的函数中使用全局变量
我有以下脚本:
COUNT = 0
def increment():
COUNT = COUNT+1
increment()
print COUNT
Run Code Online (Sandbox Code Playgroud)
我只想增加全局变量COUNT,但是这给了我以下错误:
Traceback (most recent call last):
File "test.py", line 6, in <module>
increment()
File "test.py", line 4, in increment
COUNT = COUNT+1
UnboundLocalError: local variable 'COUNT' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
全局变量如何在Python中运行?我知道全局变量是邪恶的,我只是在尝试.
这在python中不起作用:
G = None
def foo():
if G is None:
G = 1
foo()
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
UnboundLocalError: local variable 'G' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
什么是全球声明?它是如何使用的?我读过Python的官方定义 ;
但是,它对我来说没有多大意义.
可能重复:
在创建它们的函数之外的函数中使用全局变量
我正在使用函数,以便我的程序不会乱七八糟,但我不知道如何将局部变量设置为全局.
是否可以编写一个将对象插入全局命名空间并将其绑定到变量的函数?例如:
>>> 'var' in dir()
False
>>> def insert_into_global_namespace():
... var = "an object"
... inject var
>>> insert_into_global_namespace()
>>> var
"an object"
Run Code Online (Sandbox Code Playgroud) 我正在尝试添加或减去已定义的变量,但我无法弄清楚如何使用新值覆盖旧值.
a = 15
def test():
a = a +10
print ( a )
test()
Run Code Online (Sandbox Code Playgroud)
错误信息:
Traceback (most recent call last):
File "test.py", line 7, in <module>
test()
File "test.py", line 4, in test
a = a +10
UnboundLocalError: local variable 'a' referenced before assignment
Run Code Online (Sandbox Code Playgroud) 如果我有这个:
def oneFunction(lists):
category=random.choice(list(lists.keys()))
word=random.choice(lists[category])
def anotherFunction():
for letter in word: #problem is here
print("_",end=" ")
Run Code Online (Sandbox Code Playgroud)
我之前已经定义过lists,所以oneFunction(lists)效果很好.
我的问题是word在第6行调用.我试图word在第一个函数外面word=random.choice(lists[category])定义相同的定义,但word即使我调用它也总是相同的oneFunction(lists).
我想能够,每次我调用第一个函数,然后第二个函数,有一个不同的word.
如果word不在外面定义,我可以这样做oneFunction(lists)吗?
我是python的新手。
我不太明白我需要如何设置变量并在稍后使用的函数中更改它们。我的脚本需要从函数中获取 x 和 y 值,这些值由函数创建的图表的大小决定。这些变量需要稍后在脚本中传递给打印命令以输出 html。所以假设我有全局变量:
originx_pct = 0.125
originy_pct = 0.11
Run Code Online (Sandbox Code Playgroud)
但是当函数运行时,这些将需要改变......
def makeplot(temp, entropy,preq):
originx_pct = origin.get_points()[0][0]
originy_pct = origin.get_points()[0][1]
Run Code Online (Sandbox Code Playgroud)
然后在后面写的html页面的javascript中打印出来...
print('var originx_pct = {};'.format(originx_pct))
print('var originy_pct = {};'.format(originy_pct))
Run Code Online (Sandbox Code Playgroud)
这两个变量不会改变,我只是不明白我需要做什么来更新它们并能够打印它们(在函数之外)。我假设函数不知道变量,所以它不能改变它们。如果我将 2 个变量作为参数提供给函数,我如何为脚本的打印部分取回值?