为什么Python 3中的函数中的初始化字典自变量是不可变的?

用户名

在以下定义的函数中,

def a_function(x, dictionary = dict()):
    if not dictionary:
        print('Empty Dictionary')
        dictionary['A'] = 1
        dictionary['B'] = 2
    return dictionary.get(x)

它接受'A'or'B'并返回1or 2字典参数应该每次都初始化,但是当我运行它时,它是不可变的,因为一旦创建,它就不会再次启动。'Empty Dictionary'只运行一次。为什么?

>> a_function('A')
Empty Dictionary
1
>> a_function('B')
2
保罗

Python文档指出:

执行功能定义时,默认参数值从左到右评估。

这意味着在定义函数时,表达式将被计算一次,并且每个调用都使用相同的“预先计算”值

例如:

>>> import datetime
>>> def f(foo=datetime.datetime.now()):
...     print(foo)

>>> f()
2020-01-21 05:21:35.084471
>>> f()
2020-01-21 05:21:35.084471

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么可变参数函数不能“吃掉” C ++ 11中的列表初始化参数?

来自分类Python

为什么整数在Python中是不可变的?

来自分类Dev

在Python 3中重新初始化字典的最佳方法

来自分类Dev

在构造函数中初始化变量后进行验证:为什么不这样做呢?

来自分类Dev

为什么我无法在jQuery中初始化变量?

来自分类Dev

为什么final可以在构造函数中初始化?

来自分类Dev

Python 3中的Python类变量初始化不同

来自分类Dev

为什么Dart只允许在初始化列表中初始化Final变量?

来自分类Javascript

为什么函数的自变量不是JavaScript中的数组对象?

来自分类Linux

什么时候在Python中初始化类变量?

来自分类Dev

检查Python中的初始化变量

来自分类Dev

在Python中“初始化”变量?

来自分类Python

为什么`object`类的实例在Python中是不可变的?

来自分类Dev

为什么Python中存在不可变的对象?

来自分类Dev

为什么函数内部的变量没有初始化?

来自分类Dev

为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

来自分类Dev

为什么在Swift中初始化变量的行上出现“初始化前使用变量”错误?

来自分类Dev

为什么我必须使用 this 关键字来初始化构造函数中的实例变量?

来自分类Dev

为什么Java不允许在构造函数中初始化静态最终变量(例如static final int d)?

来自分类Java

为什么要在所有构造函数中显式初始化空白的最终变量?

来自分类Java

在构造函数中初始化静态变量时,为什么Java不给出错误?

来自分类Dev

为什么我不能通过Groovy中的构造函数内部的闭包来初始化最终类变量?

来自分类Dev

为什么`this`在C#6.0自动属性初始化中不可用?

来自分类Dev

每次在python 2.7中调用外部文件中的函数时是否重新初始化变量

来自分类Dev

为什么可以在python 3中使用ctypes修改不可变字节对象?

来自分类Dev

为什么在Golang中仅初始化定义中的一个变量会失败

来自分类Dev

为什么函数参数在Swift中是不可变的?

来自分类Dev

为什么在构造函数初始化程序中初始化 const char 数组成员不兼容?

来自分类Dev

为什么 React Component 函数构造函数中的方法在组件初始化后进行评估?

Related 相关文章

  1. 1

    为什么可变参数函数不能“吃掉” C ++ 11中的列表初始化参数?

  2. 2

    为什么整数在Python中是不可变的?

  3. 3

    在Python 3中重新初始化字典的最佳方法

  4. 4

    在构造函数中初始化变量后进行验证:为什么不这样做呢?

  5. 5

    为什么我无法在jQuery中初始化变量?

  6. 6

    为什么final可以在构造函数中初始化?

  7. 7

    Python 3中的Python类变量初始化不同

  8. 8

    为什么Dart只允许在初始化列表中初始化Final变量?

  9. 9

    为什么函数的自变量不是JavaScript中的数组对象?

  10. 10

    什么时候在Python中初始化类变量?

  11. 11

    检查Python中的初始化变量

  12. 12

    在Python中“初始化”变量?

  13. 13

    为什么`object`类的实例在Python中是不可变的?

  14. 14

    为什么Python中存在不可变的对象?

  15. 15

    为什么函数内部的变量没有初始化?

  16. 16

    为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

  17. 17

    为什么在Swift中初始化变量的行上出现“初始化前使用变量”错误?

  18. 18

    为什么我必须使用 this 关键字来初始化构造函数中的实例变量?

  19. 19

    为什么Java不允许在构造函数中初始化静态最终变量(例如static final int d)?

  20. 20

    为什么要在所有构造函数中显式初始化空白的最终变量?

  21. 21

    在构造函数中初始化静态变量时,为什么Java不给出错误?

  22. 22

    为什么我不能通过Groovy中的构造函数内部的闭包来初始化最终类变量?

  23. 23

    为什么`this`在C#6.0自动属性初始化中不可用?

  24. 24

    每次在python 2.7中调用外部文件中的函数时是否重新初始化变量

  25. 25

    为什么可以在python 3中使用ctypes修改不可变字节对象?

  26. 26

    为什么在Golang中仅初始化定义中的一个变量会失败

  27. 27

    为什么函数参数在Swift中是不可变的?

  28. 28

    为什么在构造函数初始化程序中初始化 const char 数组成员不兼容?

  29. 29

    为什么 React Component 函数构造函数中的方法在组件初始化后进行评估?

热门标签

归档