在我的书《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()
,它也会给我一个有趣的输出:
输出:
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个输出? -上面有配料表的那个 -一个没有?
你不应该把函数传递给它自己。在
更换这些:
与
^{pr2}$发生错误的原因是因为您正在将函数
make_pizza
传递给自身,该函数没有return值(它不返回任何内容)。在但是内部函数仍然完全执行。也就是说,每个示例中的第二个
make_pizza
运行正常,这就是为什么您得到两个输出。在对于第二个函数,您实际上是在尝试运行:
这当然会导致以下错误:
因为}。在
topping
是{有时在输出中看到}(就像在一个包含文本
- None
的原因是str(None)
将None
转换为{None
的字符串中一样)。在相关问题 更多 >
编程相关推荐