我正在学习python,我想将我的代码的不同过程分成不同的函数。为此,我需要将前一个函数的变量作为其他函数的参数。我尝试了一些这样的事函数如何使用其他(函数)生成的变量作为python自身的参数?
def F1 (A):
B=A+1
def F2 (B):
C=B+1
print C
F1(1) F2()
例如,在这种情况下,我希望得到3作为最终结果。
但它不起作用。
我正在学习python,我想将我的代码的不同过程分成不同的函数。为此,我需要将前一个函数的变量作为其他函数的参数。我尝试了一些这样的事函数如何使用其他(函数)生成的变量作为python自身的参数?
def F1 (A):
B=A+1
def F2 (B):
C=B+1
print C
F1(1) F2()
例如,在这种情况下,我希望得到3作为最终结果。
但它不起作用。
只是return
它:
def F1 (A):
return A+1
def F2 (B):
C=B+1
print C
# Then use it as parameter
F2(F1(1))
编辑:由于您编辑了您的文章:函数内创建的变量对于该函数是本地的,这意味着除非您使用global
命令(例如, global myvar
。这是不推荐的是,它会更好,如果你的代码是这样的:
def F1 (A):
return A+1
def F2 (B):
return B+1
first = F1(1)
second = F2(first)
print first, second
记住,def F2 (B):
手段“使用B
作为参数” - 直到你调用一个值的函数的参数是不确定的。
---原来的答案---
不知道你想什么,在这里做,但让我试着解释功能:
def F1(A):
...
这将创建一个名为F1
功能,接受称为A
的单个参数。被传递到F1
任何参数将被设置为A
,所以:
def F1(A):
print A
F1('hello world')
在这段代码F1
被调用,参数'hello world'
。该参数设置为A
,然后该功能运行print A
,该功能现在相当于print 'hello world'
。
因此,在您的功能中,您将立即重新指定A
到B
,但B
尚未在代码中的任何位置创建。作业B=C
的意义不大。
是的,你是对的。现在我解决了我想要做的逻辑意义。 – Geparada 2011-05-14 00:18:05
也许你需要一个共享对象存储的结果?像一个dict
:
def f1(data):
data['b'] = data['a'] + 1
def f2(data):
data['c'] = data['b'] + 1
print data['c']
my_data = {'a': 1}
f1(my_data)
f2(my_data) # prints 3
有趣!谢谢 – Geparada 2011-05-14 00:28:32
什么不行 - 你期待什么? – martineau 2011-05-14 00:05:45
http://www.catb.org/~esr/faqs/smart-questions.html#id479555(请阅读整篇文章)。我有一种感觉是什么“不起作用”是Python将您的代码分离到函数名称空间中。但是你没有提供你所期望的线索。 – 2011-05-14 00:05:49