我对python中的函数有一个问题,我在编程方面很新,所以请以最简单的方式给出你的例子,谢谢
我想在这样的函数中调用函数:
def func1 (a):
b = a + 1
def func2():
c = b*3
print c
def func3():
c = b/5
print c
func1(5).func2()
如何在func1内调用func2或func1内的func3?是的,我确实需要func1,func2和func3,我不想使用类
答案 0 :(得分:1)
你试过打电话吗? 和提示:记住缩进
def func1 (a):
b = a + 1
def func2():
c = b*3
print c
def func3():
c = b/5
print c
funct2() #function called , WORKS !
答案 1 :(得分:0)
def func1 (a):
b = a + 1
def func2():
c = b*3
print c
def func3():
c = b/5
print c
return func2,func3
关闭可能有效
答案 2 :(得分:0)
虽然你真的不需要新函数来完成这么简单的任务,但在另一个函数中调用函数会是这样的:
def func2(b):
return b*3
def func3(b):
return b/5
def func1(a):
b = a + 1
c = func2(b)
print c
c = func3(b)
print c
最后用输入调用你的函数,例如5:
func1(5)
答案 3 :(得分:0)
有一种方法可以实现您想要的语法,但它非常不规则,我强烈建议不要使用它。这很黑。
def func1(a):
b = a + 1
def func2():
c = b*3
print c
def func3():
c = b/5
print c
func1.func2 = func2
func1.func3 = func3
return func1
现在,在解释器shell中:
>>> def func1(a):
... b = a + 1
... def func2():
... c = b*3
... print c
... def func3():
... c = b/5
... print c
... func1.func2 = func2
... func1.func3 = func3
... return func1
...
>>> func1(5).func2()
18
>>>
对于Guido,请不要这样做。
答案 4 :(得分:0)
函数对象func2
和func3
是函数func1
的本地对象,这意味着它们不在func1
之外,除非func1
显式返回它们到呼叫环境。
因此,如果你想调用func1
之外 的那些函数(就像你发布的代码试图做的那样),你需要做这样的事情:
def func1(a):
b = a + 1
def func2():
c = b*3
print c
def func3():
c = b/5
print c
return func2, func3
f2, f3 = func1(5.0)
f2()
f3()
<强>输出强>
18.0
1.2
f2
和f3
将使用a
创建时func1
参数的值。如果您想使用其他a
,请再次拨打func1
;每次调用它时,都会创建func2
和func3
函数对象的新实例。
<小时/> 除了
请注意,我将5.0
而非5
的参数传递给func1
。这是为了确保b/5
中的func3
使用浮点除法。这在Python 3中不是必需的,并且为了在Python 2中获得Python 3行为,您可以放置
from __future__ import division
位于脚本的顶部。