函数 called/referred 何时执行,何时执行?

When is a function called/referred to and when is it being executed?

我对 Python 比较陌生,我有一个(我猜)关于 Python 函数的非常基本的问题。

我正在重新观看基础教程,以便真正了解更多结构,而不仅仅是使用它们。我使用了教程中的一些基本代码并尝试了不同的简单变体,但我不完全了解结果以及何时引用函数,即何时调用其 return 值以及何时执行.

x=6

def example():

    globx = x
    print(globx)
    globx+=5
    print(globx)

example()

这定义了函数并随后调用它来执行,并且在执行时打印 6 然后打印 11,正如预期的那样。

现在:

x=6

def example():

    globx = x
    print(globx)
    globx+=5
    print(globx)

print(example())

我原以为它会打印 "None",因为打印正在寻找函数的 return 值来打印它,但 example() 没有 return 值。相反,正在打印 6、11 和 None。所以我假设 print(example()) 调用 example() 的 return 值来打印它,但之前也执行该函数。 (如有错误请指正。)

即使我只是在函数定义后将 return 值分配给变量 x = example() ,它也会执行函数并打印 6 然后 11.

x=6

def example():

    globx = x
    print(globx)
    globx+=5
    print(globx)

x = example()

一个函数是不是写出来了就一直在执行? (def 除外) 有没有办法在不完全执行的情况下使用函数 return 值? 例如,如果我有一个更复杂的代码并且在某些时候我想使用一个函数 return 值但不希望它是 运行.

提前致谢!

您对函数 return 和函数的作用感到困惑。

在您的例子中,您有一个包含两个 print() 语句的函数。这些语句与函数 return 的值无关,并且会在每次调用函数 example().

时打印它们的相应值

函数的 return 值是使用 return 关键字定义的,如果未定义则为 None。显然需要执行该函数才能使其达到 return 一个值。

你说的似乎总体上是正确的,即使它似乎与你的预期不符。

一般可以看成,当函数最后有括号时,即example(),函数就执行了

你的最后一个问题有点含糊,但你可以在函数内部使用 return 关键字在某个时刻停止执行函数。这在例如一个执行一些资源密集型计算的函数,但偶尔也有机会走捷径。

举个例子

def calculate_thing(shortcut = False):
    if shortcut:
        return 3
    # Resource-intensive, time-consuming calculations go here
    return result_of_calculations

calculate_thing(shortcut=True)调用这个函数会很快return3,因为当我们点击return 3时函数停止执行。另一方面,通过 calculate_thing(shortcut=False)calculate_thing() 调用它(Falseshortcut 的默认值)将使函数 运行 暂时,做一些计算,然后它 returns 分配给变量 result_of_calculations.

的任何值

一个函数做某事,它实际上执行一个功能。如果您希望该函数在执行其工作时向您显示结果,您可以 print() 事情。如果你只是想让它完成它的工作并保存结果供以后使用,你可以 return 将它们保存到调用该函数的变量中。你可以两者都做!

def just_print(input):
   print('Here is a function printing!', input)

just_print('cool!')
>> 'Here is a function printing!', 'cool!'


def return_value(input):
    return 'Hello ' + input

# We can store the return for future use
save_return_val = return_value('Ari')

print(save_return_val)
>> 'Hello Ari'

# Just print it
print(return_value('Ari'))
>> 'Hello Ari'