我正在尝试从父函数将数据传递给子函数但我失败了,请帮助
>>> def funa():
a=10
b=20
funb()
>>> def funb():
c=a+b
print(c)
>>> funa()
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
funa()
File "<pyshell#27>", line 4, in funa
funb()
File "<pyshell#31>", line 2, in funb
c=a+b
NameError: name 'a' is not defined
>>>
答案 0 :(得分:3)
试试这个
def funa():
a=10
b=20
funb(a,b)
def funb(a,b):
c=a+b
print(c)
答案 1 :(得分:1)
在他的回答中使用按价值传递方法作为Pavan。
或使用 global 变量方法:
>>> a = 10
>>> b = 20
>>>
>>> def test():
... global a, b
... a = 1
... b = 2
... test1()
...
>>> def test1():
... print "a:", a, "\tb:", b
...
>>> test()
a: 1 b: 2
>>>
答案 2 :(得分:1)
在函数中定义变量时,它是函数的本地变量。这称为本地范围。有几种方法可以解决这个问题。您正在寻找的是全局范围,您可以在Python中执行此操作:
def funa():
global a
global b
a=10
b=20
funb()
唷!那太乱了!是的,并且有充分的理由。这是一个不好的设计。一般来说,以这种方式使用全局变量是不好的做法,因为这两个函数现在绑在一起,不仅与自己绑在一起,而且与程序的其余部分绑定在一起。好的设计是它们是封装的,即它们是独立的:
def funa():
a=10
b=20
funb(a, b)
def funb(a, b):
c=a+b
print(c)
为什么呢?因为现在funa()
和funb()
可以在其他地方使用。我们甚至不必再将这些值称为a
和b
。我现在可以使用来自其他函数的funb()
中的善。如果我将funb()
放入模块中,我甚至可以在其他程序中使用它。这意味着我们不必两次编写相同的代码(原理称为DRY - 不要重复自己)。如果您创建独立且独立的代码,则可以重用它。