返回信息流def f():
print "foo"
return 42
def g():
print "bar"
return 43
class B(object):
def __init__(self):
self.name = "Santa Claus"
b = B()
b.name(f(),g())
# Will f be called?
# Will g be called?
# How about b.name?
这是一条镜像帖。来源:北邮人论坛 / soft-design / #42924同步于 2012/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[Python]你猜运行结果会是什么?
wks
2012/12/20镜像同步23 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
import dis
def c(obj,f1,f2):
obj.meth(f1(),f2())
dis.dis(c)
2 0 LOAD_FAST 0 (obj)
3 LOAD_ATTR 0 (meth)
6 LOAD_FAST 1 (f1)
9 CALL_FUNCTION 0
12 LOAD_FAST 2 (f2)
15 CALL_FUNCTION 0
18 CALL_FUNCTION 2
21 POP_TOP
22 LOAD_CONST 0 (None)
25 RETURN_VALUE
ruby呢?
【 在 qiukun 的大作中提到: 】
: fun,那么 python 和 ruby 在方法调用上其实是一样的?
应该是很开心的先看到了f和g, 就跑f和g, 跑完了准备跑name的时候发现name不能跑, 于是python怒了说你丫耍我呢给你丢个异常出来...
生动,我猜python就这么想的
【 在 tonicbupt 的大作中提到: 】
: 应该是很开心的先看到了f和g, 就跑f和g, 跑完了准备跑name的时候发现name不能跑, 于是python怒了说你丫耍我呢给你丢个异常出来...
哈哈好有趣
【 在 tonicbupt 的大作中提到: 】
: 应该是很开心的先看到了f和g, 就跑f和g, 跑完了准备跑name的时候发现name不能跑, 于是python怒了说你丫耍我呢给你丢个异常出来...
嗯。更开心的是先看到name发现“嘿,name这个属性还真有,先拿出来,以后call它”。然后屁颠儿屁颠儿地跑完f和g。然后才发现name不是callable。然后华丽地被耍了。
【 在 tonicbupt 的大作中提到: 】
: 应该是很开心的先看到了f和g, 就跑f和g, 跑完了准备跑name的时候发现name不能跑, 于是python怒了说你丫耍我呢给你丢个异常出来...