每当我将变量分配给函数时,它都会运行该函数。结果,如果我在函数中有一个打印语句,它会打印文本,即使我想做的只是分配但不运行该函数。我不相信在 C++ 等许多其他编程语言中都是这种情况,那么我在这里遗漏了一个核心概念吗?
def function(x):
print("Text From Function")
return 3*x
y = function(2)
Run Code Online (Sandbox Code Playgroud)
我希望没有输出,但实际输出是:来自函数的文本
我正在使用python展平嵌套列表,例如[1,2,[3,4,[5,[[6,7]]]]],我想创建一个生成器,以便可以使用for循环将嵌套列表中的所有数字一一打印出来。但这并没有按我预期的那样工作。
当我将'yield'关键字替换为'print'时,数字将一一打印出来。但是,以这种方式,它不再是生成器。
以下内容无法正常工作:
from collections.abc import Iterable
def flatten(nested):
for item in nested:
if isinstance(item, Iterable):
flatten(item)
else:
yield item
x = [1,2,[3,4,[5,[[6,7]]]]]
y = flatten(x)
for element in y:
print(element)
Run Code Online (Sandbox Code Playgroud)
但是,如果我写了下面的一样,在这里我取代了代码yield用
print,这个数字将得到正确打印
from collections.abc import Iterable
def flatten(nested):
for item in nested:
if isinstance(item, Iterable):
flatten(item)
else:
print(item)
x = [1,2,[3,4,[5,[[6,7]]]]]
y = flatten(x)
Run Code Online (Sandbox Code Playgroud)
如果写着:
x = [[1,2],[3,4,[5,[[6,7]]]]]
y = flatten(x)
y.__next__()
Run Code Online (Sandbox Code Playgroud)
错误消息将是 y.__next__() StopIteration