书籍示例混淆

我正在阅读O'Reilly的学习python(很棒的书),但我来了
在一个示例(pg 291,pdf)中,我不太了解
作者的解释理由:
如果F1()或F2():
作者指出,如果F1()
返回true,F2()将无法评估..这是有道理的.他的
引用:
"在这里,如果F1返回真实(或非空价),Python将会
永远不要运行F2."
然后他说:
"为确保两个功能都将运行,请致电
在"或"之前:"
TMP1,TMP2 = F1(),F2()
如果TMP1或TMP2:
因为每个函数都是一个对象,一个名称分配给
(TMP1,TMP2)实际上没有评估或运行该功能本身,直到
这个名字叫..所以为什么后一个示例"运行"两者都会"运行"
正如作者所建议的那样的功能?

# 回答1


在第二个示例中注意F1和F2之后的括号.那是
称为功能并导致它们进行评估和运行的原因.
- 克里斯
从我的iPod发送
在2008年9月12日,下午12:36,拜伦 在9月13日,5:36*上午,拜伦 这不是"名称分配".
实际上,这是这样做的:
tmp1 = f1()#获取调用f1()的结果
tmp2 = f2()#同样f2
如果TMP1或TMP2:#如果结果1或Result2
a(毫无意义的)"名称分配")带有您担心的零效应
看起来像这样:
tmp1,tmp2 = f1,f2#看,函数名称之后没有括号
如果TMP1()或TMP2():
hth,
约翰
# 回答2


在9月12日,3:51*PM,John Machin 这不是"名称分配".
实际上,这是这样做的:
* * tmp1 = f1()#获取调用f1()的结果
* * tmp2 = f2()#同样的f2
* *如果TMP1或TMP2:#如果结果1或Result2
a(毫无意义的)"名称分配")带有您担心的零效应
看起来像这样:
* * tmp1,tmp2 = f1,f2#看,函数名称后没有括号
* *如果TMP1()或TMP2():
hth,
约翰
那讲得通.谢谢你的澄清.
# 回答3


拜伦写道:
如果代码为
TMP1,TMP2 = F1,F2
但不是.再看一次.

标签: python

添加新评论