如果从函数返回v,为什么D.get(k,v)似乎总是执行v?

坦率的
D = {'a':1}
D.get('a', print('hah'))

尽管成功返回了1,但我也得到了“哈”。为什么?似乎python需要评估如果'a'不存在时应该返回的内容,并且以某种方式被欺骗了,因为它期望的只是一个变量。

另外,是否有一种聪明的方法来获得预期的行为(不执行打印功能),除此之外:

D.get('a', print('hah') if not D.get('a') else None)

请注意,这里的print()是MWE。我真的需要使用一个返回列表的函数。

丹尼尔

当python调用一个函数时,首先会评估所有参数,因为python不知道是否需要一个参数。

如果您不希望评估,则必须使用if或例外:

D = {'a': 1}
try:
    a = D['a']
except KeyError:
    a = print('hah')

有两次查找,因此不太优雅:

a = D['a'] if 'a' in D else print('hah')

或者,如果可以保证,字典中的值永远不会求和False(没有空字符串,空元组,0、0.0,...,请谨慎!):

a = D.get('a') or print('hah')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此香草js函数在d3v3和d3v4中返回不同的结果

来自分类Dev

为什么Map <K,V>不扩展Function <K,V>?

来自分类Dev

为什么此函数总是返回0

来自分类Dev

为什么此函数总是返回零?

来自分类Dev

为什么这个函数总是返回 0

来自分类Dev

为什么 typeof 执行的函数返回 undefined

来自分类Dev

为什么返回结果的函数总是返回Err?

来自分类Dev

Haskell:对于Map中的每个(k,v),请对k和v执行IO()

来自分类Dev

如果总是执行finally,为什么try会返回未固定的值

来自分类Dev

如何在Ref <HashMap <K,V >>上调用get函数并返回Option <Ref <T >>?

来自分类Dev

如果函数f()返回一个正确的指针:auto * v = f()或auto v = f()?

来自分类Dev

如果函数f()返回一个正确的指针:auto * v = f()或auto v = f()?

来自分类Dev

在V8中,为什么Isolate :: GetCurrent()返回NULL?

来自分类Dev

此代码是什么意思(如果v然后返回v end)?

来自分类Dev

为什么SQL函数总是返回空结果集?

来自分类Dev

为什么我的函数总是返回相同的值?

来自分类Dev

PHP为什么DateTime差异函数总是返回零?

来自分类Dev

为什么main函数总是必须始终返回某些内容?

来自分类Dev

为什么SQL函数总是返回空结果集?

来自分类Dev

为什么我的dllimport函数总是返回true?

来自分类Dev

为什么我的 getColor 函数总是返回 false?

来自分类Dev

为什么我的 react native 函数总是返回 undefined?

来自分类Dev

为什么这个函数似乎没有返回任何值

来自分类Dev

Java HashObjObjMap <K,V>与HashMap <K,V>

来自分类Dev

地图<K,V>返回地图<V,地图<K,V >> groupingBy值之后,而不是地图<的OBJ,列表<条目<K,V >>>

来自分类Dev

为什么marco“ ZVAL_COPY_VALUE(z,v)”在PHP内部似乎无法正常工作?

来自分类Dev

为什么“set -v”似乎在 bash 的子shell 中不起作用?

来自分类Dev

为什么put(K键,V值)和put(K键,Set <V>值)发生名称冲突?

来自分类Dev

什么是Map.Entry <K,V>接口?

Related 相关文章

  1. 1

    为什么此香草js函数在d3v3和d3v4中返回不同的结果

  2. 2

    为什么Map <K,V>不扩展Function <K,V>?

  3. 3

    为什么此函数总是返回0

  4. 4

    为什么此函数总是返回零?

  5. 5

    为什么这个函数总是返回 0

  6. 6

    为什么 typeof 执行的函数返回 undefined

  7. 7

    为什么返回结果的函数总是返回Err?

  8. 8

    Haskell:对于Map中的每个(k,v),请对k和v执行IO()

  9. 9

    如果总是执行finally,为什么try会返回未固定的值

  10. 10

    如何在Ref <HashMap <K,V >>上调用get函数并返回Option <Ref <T >>?

  11. 11

    如果函数f()返回一个正确的指针:auto * v = f()或auto v = f()?

  12. 12

    如果函数f()返回一个正确的指针:auto * v = f()或auto v = f()?

  13. 13

    在V8中,为什么Isolate :: GetCurrent()返回NULL?

  14. 14

    此代码是什么意思(如果v然后返回v end)?

  15. 15

    为什么SQL函数总是返回空结果集?

  16. 16

    为什么我的函数总是返回相同的值?

  17. 17

    PHP为什么DateTime差异函数总是返回零?

  18. 18

    为什么main函数总是必须始终返回某些内容?

  19. 19

    为什么SQL函数总是返回空结果集?

  20. 20

    为什么我的dllimport函数总是返回true?

  21. 21

    为什么我的 getColor 函数总是返回 false?

  22. 22

    为什么我的 react native 函数总是返回 undefined?

  23. 23

    为什么这个函数似乎没有返回任何值

  24. 24

    Java HashObjObjMap <K,V>与HashMap <K,V>

  25. 25

    地图<K,V>返回地图<V,地图<K,V >> groupingBy值之后,而不是地图<的OBJ,列表<条目<K,V >>>

  26. 26

    为什么marco“ ZVAL_COPY_VALUE(z,v)”在PHP内部似乎无法正常工作?

  27. 27

    为什么“set -v”似乎在 bash 的子shell 中不起作用?

  28. 28

    为什么put(K键,V值)和put(K键,Set <V>值)发生名称冲突?

  29. 29

    什么是Map.Entry <K,V>接口?

热门标签

归档