2011-05-13 68 views
0

我正在学习python,我想将我的代码的不同过程分成不同的函数。为此,我需要将前一个函数的变量作为其他函数的参数。我尝试了一些这样的事函数如何使用其他(函数)生成的变量作为python自身的参数?

def F1 (A): 
    B=A+1 

def F2 (B): 
    C=B+1 
    print C 

F1(1) F2()

例如,在这种情况下,我希望得到3作为最终结果。

但它不起作用。

+1

什么不行 - 你期待什么? – martineau 2011-05-14 00:05:45

+0

http://www.catb.org/~esr/faqs/smart-questions.html#id479555(请阅读整篇文章)。我有一种感觉是什么“不起作用”是Python将您的代码分离到函数名称空间中。但是你没有提供你所期望的线索。 – 2011-05-14 00:05:49

回答

3

只是return它:

def F1 (A): 
    return A+1 

def F2 (B): 
    C=B+1 
    print C 

# Then use it as parameter 
F2(F1(1)) 
2

编辑:由于您编辑了您的文章:函数内创建的变量对于该函数是本地的,这意味着除非您使用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'

因此,在您的功能中,您将立即重新指定AB,但B尚未在代码中的任何位置创建。作业B=C的意义不大。

+0

是的,你是对的。现在我解决了我想要做的逻辑意义。 – Geparada 2011-05-14 00:18:05

1

也许你需要一个共享对象存储的结果?像一个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 
+0

有趣!谢谢 – Geparada 2011-05-14 00:28:32

相关问题