为什么为功能分配名称会自动执行该功能?

时间:2019-03-11 05:14:28

标签: python python-3.x

def myfunc():
    print("hello")

b=myfunc()

在上面的代码中,只需将b分配给myfunc(),输出就是“ hello”。为什么是这样?我从未要求执行myfunc(),而是为其分配了名称。我知道类是在导入时执行的,但这不是一个类。

3 个答案:

答案 0 :(得分:1)

myfuncmyfunc()是不同的东西。在您的代码中,myfunc是函数引用,而myfunc()返回调用myfunc的结果。

您想要这个:

b=myfunc

答案 1 :(得分:0)

myfunc()意味着您正在调用函数,因为函数没有返回b并没有任何值。

如果打印b,则不显示任何内容。

如果在这种情况下分配b = myfunc,则将函数的引用传递给变量b(如果使用b()),它将执行函数主体,这意味着b和myfunc将指向相同的引用。

答案 2 :(得分:0)

由于打印值或从函数返回值之间存在差异。您仅在函数中进行打印,而不从函数返回任何值。因此,如果该函数未返回任何内容,则无法将其分配给该变量...使用myfunc()执行该函数只会将值打印到终端。如果要将该值存储到变量,您需要从函数中将其返回。 :)

def myfunc():
    print("Helloo")

b = myfunc()
--> hellloo

b = myfunc
b
--> <function __main__.hello()>

b()
--> hellloo

def myfucn():
    return("hellloo") 

b = hello()
b
--> hellloo'