Python,传递给另一个函数的多个变量的简单示例

时间:2015-07-27 22:02:13

标签: python function variables

我知道之前已经解释过这个问题,但我仍然无法弄清楚我的情况,我解释的很简单:

def func1 ():
  a = 1
  b = 2
  print a + b

def func2 ():
  c = 3
  d = 4
  e = a * c
  f = b + d

func1()
func2()

当这样跑:

$ ./test1.py 
3
Traceback (most recent call last):
  File "./test1.py", line 18, in <module>
    func2()
  File "./test1.py", line 14, in func2
    e = a * c
NameError: global name 'a' is not defined

简单的问题是,如何更改上面的代码,以便func2存储来自func1的变量?

4 个答案:

答案 0 :(得分:5)

我不会像其他答案中提到的那样将变量设为全局变量,而是将其返回func1并在func2中使用它们。

def func1():
    a = 1
    b = 2
    print a + b
    return a, b

def func2(a, b):
    c = 3
    d = 4
    e = a * c
    f = b + d

func2(*func1())

当我们在func1()中返回多个变量时,这些变量将作为元组(a, b)出现。

我们必须将它们解包成2个变量,而不是将它作为单个变量传递给func2

以下是*args **kwargs主题的优秀question and answer

答案 1 :(得分:3)

执行此操作的正确方法是使用return和参数。

def func1 ():
  a = 1
  b = 2
  return a,b

def func2 (a, b):
  c = 3
  d = 4
  e = a * c
  f = b + d

a, b = func1()
print(a, b)
func2(a, b)

结果:

>>> a, b = func1()
>>> print(a, b)
1 2
>>> func2(a, b)

答案 2 :(得分:0)

a = 1
b = 2
def func1 ():
    print a + b

def func2 ():
    c = 3
    d = 4
    e = a * c
    f = b + d

func1()
func2()

答案 3 :(得分:0)

刚刚将变量设为全局变量(没有这个,a和b只是局部变量):

def func1 ():
  global a, b
  a = 1
  b = 2
  print a + b

def func2 ():
  c = 3
  d = 4
  e = a * c
  f = b + d

func1()
func2()

但最好避免这种解决方案