我正在阅读“Python速成班”一书,我已经完成了一项关于将列表的副本作为参数传递给函数的练习。我既不能解决这个问题,我也不完全清楚作者提出的解决办法。
这是练习案文:
“不变的魔术师:从练习8-10开始工作。使用魔术师姓名列表的副本调用函数make_great()。Because the original list will be unchanged, return the new list and store it in a separate list。用每个列表调用show_magicians(),以显示您有一个原始名称列表,一个列表中添加了每个魔术师的名字。“
我的问题是突出的线条。为什么需要返回语句?
我的意思是,在执行下面代码中的返回魔术师语句之后,实际会发生什么?
请您也向我解释一下,当我注释掉返回语句:TypeError:'NoneType‘对象是不可迭代的时遇到的错误。
def show_magicians(magicians):
"""Print the name of each magician in the list."""
for magician in magicians:
print(magician)
def make_great(magicians):
"""Add 'the Great!' to each magician's name."""
# Build a new list to hold the great musicians.
great_magicians = []
# Make each magician great, and add it to great_magicians.
while magicians:
magician = magicians.pop()
great_magician = magician + ' the Great'
great_magicians.append(great_magician)
# Add the great magicians back into magicians.
for great_magician in great_magicians:
magicians.append(great_magician)
return magicians
magicians = ['Harry Houdini', 'David Blaine', 'Teller']
show_magicians(magicians)
print("\nGreat magicians:")
great_magicians = make_great(magicians[:])
show_magicians(great_magicians)
print("\nOriginal magicians:")
show_magicians(magicians)提前谢谢你!
发布于 2022-01-10 11:54:28
返回语句是必要的,因为您希望存储make_great的结果,这是魔术师的列表。
great_magicians = make_great(magicians[:])如果不提供返回语句,则将返回None。因此,您不能在None中迭代show_magicians。
# without return statement great_magicians will be None
great_magicians = make_great(magicians[:])
show_magicians(great_magicians)发布于 2022-01-10 12:18:49
首先让我解释一下return语句是如何工作的,函数将继续执行直到返回语句。返回语句用于结束函数的执行,并将值返回给调用方,返回语句后的代码不执行。
例如,考虑遵循以下代码。
def get_full_name(first_name, last_name):
"""the function takes first_name and last_name as parameter the concatenates both values and returns the full name"""
return first_name + " " + last_name
# if there's further code after the return statement it won't execute.
full_name = get_full_name("Ali", "Muhammad")
# the value returned by get_full_name function will be assigned to full_name variable. 顺便说一句,你的代码看起来不错!也许有压痕在
for great_magician in great_magicians:
magicians.append(great_magician)
return magicians您可以在这里检查工作代码:https://colab.research.google.com/drive/1Ie9Nd9jlgKW5JTx_ZQdAkkEwykarDfv_?usp=sharing
https://stackoverflow.com/questions/70651747
复制相似问题