Python 如何使用在另一个函数中定义但希望在下一个函数中使用的变量?

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

在这里,我想在下一个函数中再次使用变量对象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 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是一个常数,而不是一个变量。为什么不在两个函数的公共范围内定义一个?