如何使 return 具有与打印相同的行为?

How to have the same behaviour with return than print?

我理解“return”在打印执行整个函数时“满足”时停止。也就是说,我永远无法使用 return 获得相同的行为。如果以后不行,为什么初学者要用打印来学习?

如果我写:

for i in range(1, 4):
    print(i)

我得到: 1个 2个 3个 . 但是如果我写:

def function():
    for i in range(1, 4):
        return i

print(function())

我得到: 1

如何有相同的行为?通常我想在我的函数中循环,我不想要第一个值。

#Edit :我尝试使用 return 创建列表,但仍然无法正常工作:

keys = []
values = []
def asking():
    
    for i in range(1, 21):
        keys.append(i)
    #return keys #works fine here, keys is 1 to 21
    values = ["_"]
    vide2 = dict(zip(keys, values))
    return vide2

print(asking())

我得到了:{1:'_'}

您必须在函数内部创建一个数据结构并 return 它,这是 return 多于一个值的唯一方法。

def function():
    my_list = []
    for i in range(1, 21):
        my_list.append(i)
    return my_list

请注意,数据结构(一个简单的列表)是在 for 循环结束后 return 编辑的,这样它包含您的所有值。

append(i) 是一个内置方法,它会自动将元素 i 放在列表的末尾。

打印时不带括号或逗号:

the_list = function()
for elem in the_list:
    print(elem, end=" ")

输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

基本上,您只是读取第一个元素,打印它,读取第二个元素,打印它,依此类推...

您可以使用 yield 创建生成器:

def function():
    for i in range(1, 21):
        yield i


print(*function(), sep=' ')

输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20