
1 geew OP Docstring: D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. -- 但是上例子中get a的时候test是会执行的 |
2 geew OP 可以写成这样 d.get('a') or test() |
3 xiaket 2013 年 11 月 12 日 都会啊, 为了拿到test的返回值作为参数, 需要执行. 即是先执行test再将2作为参数交给get的, 这儿get没短路它. |
4 geew OP @xiaket v = d.get('a') or 2 if test() else 3 # 会执行么 v = d.get('a') or test() # 这个呢 v = d.get('a') or (2 if test() else 3) # 这个呢 感觉是优先级的问题 |
7 ritksm 2013 年 11 月 12 日 @geew 因为test()是作为参数传入到方法里的...比如你写一个加法,难道不应该先确定两个参数再运算么...同理 def add(a, b): return a+b add(1, random.randint()) |
8 zenliver 2013 年 11 月 12 日 建议你看看sicp这本书,,,这些问题都不是问题 |
10 msg7086 2013 年 11 月 13 日 简单说,因为get依赖test的返回值,所以要在其之后执行。 |
11 hitsmaxft 2013 年 11 月 13 日 因为这里的参数列表是值传递的, python 才不管你 test()是啥玩意,运算取值再说。 你所期待的应该是 io 之类的语言,参数列表直接传递,在实际使用的时候才进行运算。 |