Python课程第151页。TypeError:无法连接“str”和“NoneType”对象

2024-09-20 03:58:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的书《Python崩溃教程》(Python Crash Course):给出了这段代码,但它给出了一个错误。在

def make_pizza(*toppings):
    """Summarize the pizza we are about to make."""
    print("\nMaking a pizza with the following toppings:")
    for topping in toppings:
        print("- " + topping)

make_pizza(make_pizza("peperoni"))

make_pizza(make_pizza("mushroom",'green peppers','extra cheese'))

回溯如下:

打印(“-”+顶部)

TypeError:无法连接“str”和“NoneType”对象

问:这里的非类型对象是什么?它是顶级的吗?如果是,为什么?

即使我在topping周围使用str(),它也会给我一个有趣的输出:

^{pr2}$

输出:

Making a pizza with the following toppings:

- peperoni

Making a pizza with the following toppings: 

- None

Making a pizza with the following toppings:
- mushroom
- green peppers
- extra cheese

Making a pizza with the following toppings:
- None

第二季度。为什么每个都显示2个输出? -上面有配料表的那个 -一个没有?


Tags: themakewithgreenextrafollowingprintmaking
1条回答
网友
1楼 · 发布于 2024-09-20 03:58:18

你不应该把函数传递给它自己。在

更换这些:

make_pizza(make_pizza("peperoni"))
make_pizza(make_pizza("mushroom",'green peppers','extra cheese'))

^{pr2}$

发生错误的原因是因为您正在将函数make_pizza传递给自身,该函数没有return值(它不返回任何内容)。在

但是内部函数仍然完全执行。也就是说,每个示例中的第二个make_pizza运行正常,这就是为什么您得到两个输出。在

对于第二个函数,您实际上是在尝试运行:

make_pizza(None)

这当然会导致以下错误:

print("- " + topping)

因为topping是{}。在


有时在输出中看到- None的原因是str(None)None转换为{}(就像在一个包含文本None的字符串中一样)。在

相关问题 更多 >