这是我的问题的简化示例。我需要使用在另一个函数中创建的变量,但是将global
放在变量实例化之前不起作用。
x = 10
def one():
global x
a = x +2
b = a/2
print (b)
def two():
one()
c = int(input())
def three():
global a
global c
d = c + a
print(b)
two()
three()
答案 0 :(得分:2)
要在Python中使用全局变量,您需要这样声明它们:
x = 10
def one():
global x
global a
global b
a = x +2
b = a/2
print (b)
def two():
one()
global c
c = int(input())
def three():
global a
global c
d = c + a
print(d)
print(b)
two()
three()
在Python中,在文件顶部定义的变量(不在函数,if语句等内部)被视为全局变量,并且可以在整个文件中访问(在其他函数等中),但也可以在导入该文件的任何文件中访问文件。
在除主体(例如函数)以外的范围中定义的变量,该变量仅可用于该函数。在这种情况下,如果您在主体以外的主体中定义新变量,则需要在创建变量之前告诉Python该变量是全局变量。同样,如果需要访问全局变量,则需要在尝试访问它之前使用global var
。
不是最佳实现。我将建议像其他人一样使用带有参数和返回的类或函数。
答案 1 :(得分:0)
使用return
语句和函数参数:
x = 10
def one(x):
a = x +2
b = a/2
print(b)
return a, b
def two():
c = int(input())
return c
def three(a, b, c) :
d = c + a
print(b)
a, b = one(x)
c = two()
three(a, b, c)
答案 2 :(得分:-1)
您可以尝试将这三个函数移到某个类中,在此类中创建一个“ x”属性,然后在上面的函数中将此“ x”用作self.x