首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python速成班练习8-11:请澄清返回语句是如何工作的。

Python速成班练习8-11:请澄清返回语句是如何工作的。
EN

Stack Overflow用户
提问于 2022-01-10 11:32:48
回答 2查看 141关注 0票数 0

我正在阅读“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‘对象是不可迭代的时遇到的错误。

代码语言:javascript
复制
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)

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-10 11:54:28

返回语句是必要的,因为您希望存储make_great的结果,这是魔术师的列表。

代码语言:javascript
复制
great_magicians = make_great(magicians[:])

如果不提供返回语句,则将返回None。因此,您不能在None中迭代show_magicians

代码语言:javascript
复制
# without return statement great_magicians will be None
great_magicians = make_great(magicians[:])
show_magicians(great_magicians)
票数 2
EN

Stack Overflow用户

发布于 2022-01-10 12:18:49

首先让我解释一下return语句是如何工作的,函数将继续执行直到返回语句。返回语句用于结束函数的执行,并将值返回给调用方,返回语句后的代码不执行。

例如,考虑遵循以下代码。

代码语言:javascript
复制
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. 

顺便说一句,你的代码看起来不错!也许有压痕在

代码语言:javascript
复制
for great_magician in great_magicians:
    magicians.append(great_magician)
    return magicians

您可以在这里检查工作代码:https://colab.research.google.com/drive/1Ie9Nd9jlgKW5JTx_ZQdAkkEwykarDfv_?usp=sharing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70651747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档