Return 个函数的值

Return values from a function

def greet():
    for name in names:
        return (f'Hello, {name.title()}!')

names = ['ron', 'tyler', 'dani']

greets = greet()
print (greets)

为什么这段代码没有return所有名字?

预期的输出应该是:

Hello, Ron!
Hello, Tyler!
Hello, Dani!

但我只得到:

Hello, Ron!

当我在函数中使用 print 而不是 return 时,我能够获取所有名称,但使用 return 则不能。请帮忙?

return 结束函数。由于您在循环内执行此操作,因此循环在第一次迭代后停止。

您需要收集您正在创建的所有字符串,将它们连接在一起,然后return。

def greet():
    return '\n'.join(f'Hello, {name.title()}!' for name in names)

另一种方法是使用生成器函数:

names = ['ron', 'tyler', 'dani']

def greet(names):
    for name in names:
        yield f'Hello, {name.title()}!'

for greeting in greet(names):
    print(greeting)