Python 如何使用在另一个函数中定义但希望在下一个函数中使用的变量?
在这里,我想在下一个函数中再次使用变量对象a,但当我在下一个函数中尝试使用a时,它给出了一个NameError。 另外,我不想在函数的开头使用变量,我想在一个函数中使用它,也希望在下一个函数中使用它Python 如何使用在另一个函数中定义但希望在下一个函数中使用的变量?,python,python-3.x,function,variables,Python,Python 3.x,Function,Variables,在这里,我想在下一个函数中再次使用变量对象a,但当我在下一个函数中尝试使用a时,它给出了一个NameError。 另外,我不想在函数的开头使用变量,我想在一个函数中使用它,也希望在下一个函数中使用它 def A(): local_a=12 print(local_a*12) return local_a # local_a stops existing here, but that's okay because we # have returned th
def A():
local_a=12
print(local_a*12)
return local_a
# local_a stops existing here, but that's okay because we
# have returned the value it contained
outer_a = A() # variable `outer_a` is the value we returned from function `A` (12 in this case)
def B(a):
b=14
print(b*a)
B(outer_a) # pass outer_a into function `B`
代码
输出
144
Traceback (most recent call last):
File "C:/Users/ADMIN/Documents/a.py", line 9, in <module>
B()
File "C:/Users/ADMIN/Documents/a.py", line 8, in B
print(b*a)
NameError: name 'a' is not defined
144
回溯(最近一次呼叫最后一次):
文件“C:/Users/ADMIN/Documents/a.py”,第9行,在
B()
文件“C:/Users/ADMIN/Documents/a.py”,第8行,在B中
打印(b*a)
NameError:未定义名称“a”
任何解决方案都将得到批准,提前感谢。您可能希望将
a
作为参数传递到B
函数中
def A():
local_a=12
print(local_a*12)
return local_a
# local_a stops existing here, but that's okay because we
# have returned the value it contained
outer_a = A() # variable `outer_a` is the value we returned from function `A` (12 in this case)
def B(a):
b=14
print(b*a)
B(outer_a) # pass outer_a into function `B`
这是一个关于全局变量和局部变量的简单问题,请注意,当您声明“a”时,它的作用域仅在函数a内部,而您可以在函数外部声明“a”并继续程序,因为现在变量的作用域是针对整个程序的
a = 0
b = 0
def A():
a=12
print(a*12)
return a
a = A()
def B():
b=14
print(b*a)
B()
只需在开始时将函数范围中的变量声明为全局变量
def A():
global a
a = 12
print(a*12)
A()
def B():
b=14
print(b*a)
B()
输出:
144
168
Process finished with exit code 0
如果回答了这个问题,那么代码的价值就值得怀疑了。
当您在函数中声明一个变量并返回该变量的“算术”版本时,您的函数几乎毫无用处。或者更确切地说,您的函数并没有以编程的方式满足某个目的,而是简化了静态输入类型的重复操作。
调用A()或B()实际上与打印算术或整数本身是一样的,因为函数的输出(返回)几乎是静态的。Hmm……我知道了。因此,我只是没有返回并调用我想在下一个函数中使用的变量。嗯……您在这里犯了一个错误,指定了a=0和b=0,因为它将在函数b中给出输出0,因为的值不会改变,即,在执行函数a后将为0 bcoz变量a将不会以12的形式存在,它将以a的形式存在,因此函数B将给出输出0。如果你不相信我,你可以检查一下。是的,你是对的,也许最好的解决方案是一个()函数同时返回A。全局变量不能代替函数参数和返回值。最好直接在全局范围内定义A,不需要函数调用来初始化它。是的,谢谢您的更正。我没有仔细阅读这个问题!看起来a是一个常数,而不是一个变量。为什么不在两个函数的公共范围内定义一个?