Python 什么';d.update(dict(a=1,b=2))和d.update(dict(';a';=1,';b';=2))之间的区别是什么

Python 什么';d.update(dict(a=1,b=2))和d.update(dict(';a';=1,';b';=2))之间的区别是什么,python,dictionary,Python,Dictionary,我尝试了两种用python更新词典的方法: d.update(dict(a=1,b=2)) 这个很好用 d.update(dict('a'=1,'b'=2)) 但是,这条路给了我一个机会 SyntaxError:关键字不能是表达式 第二句话怎么了?为什么它必须是a而不是'a'? 多谢各位 函数调用中的参数必须是标识符,而不是字符串常量 出于同样的原因,你不能写: "a" = 1 您也不能调用函数 dict("a"=5) 改为写: a = 5 dict(a=5) 如果需要从字符串常量创建字典

我尝试了两种用python更新词典的方法:

  • d.update(dict(a=1,b=2))
    这个很好用
  • d.update(dict('a'=1,'b'=2))
    但是,这条路给了我一个机会
    SyntaxError:关键字不能是表达式
    第二句话怎么了?为什么它必须是
    a
    而不是
    'a'
    ? 多谢各位

  • 函数调用中的参数必须是标识符,而不是字符串常量

    出于同样的原因,你不能写:

    "a" = 1
    
    您也不能调用函数

    dict("a"=5)
    
    改为写:

    a = 5
    dict(a=5)
    
    如果需要从字符串常量创建字典,请使用文字语法:

    {"a": 5, "b": 17}
    
    如果在调用函数时需要使用字符串作为变量名,则语法有点奇怪:

    func(**{"a": 5}) # more or less equivalent to func(a=5)
    
    但是请注意,
    .update
    函数可以通过以下方式调用:

    d.update(a=1, b=2)
    

    函数调用中的参数必须是标识符,而不是字符串常量

    出于同样的原因,你不能写:

    "a" = 1
    
    您也不能调用函数

    dict("a"=5)
    
    改为写:

    a = 5
    dict(a=5)
    
    如果需要从字符串常量创建字典,请使用文字语法:

    {"a": 5, "b": 17}
    
    如果在调用函数时需要使用字符串作为变量名,则语法有点奇怪:

    func(**{"a": 5}) # more or less equivalent to func(a=5)
    
    但是请注意,
    .update
    函数可以通过以下方式调用:

    d.update(a=1, b=2)
    

    参数必须是标识符<代码>a是一个标识符<代码>'a'不是,它是一个字符串文字(它是表达式的一种形式)

    但是,在Python中,可以使用两个星号作为命名参数列表传递字典。因此:

    d.update(**{'a': 1, 'b': 2})
    

    会有用的。但是有了这样的字典文字,这当然是无用的。但是,您可以在运行时构造一个字典
    d2
    ,然后调用
    somefunc(**d2)
    ,以
    d2
    键作为参数名调用函数,相应的值作为与这些参数名相关联的值。

    a参数必须是标识符<代码>a是一个标识符<代码>'a'不是,它是一个字符串文字(它是表达式的一种形式)

    但是,在Python中,可以使用两个星号作为命名参数列表传递字典。因此:

    d.update(**{'a': 1, 'b': 2})
    

    会有用的。但是有了这样的字典文字,这当然是无用的。但是,您可以在运行时构造一个字典
    d2
    ,然后调用
    somefunc(**d2)
    ,以
    d2
    键作为参数名调用函数,相应的值作为与这些参数名关联的值。

    @DanielRoseman:当然。我为一个更有用的用例添加了一个简短的描述。@DanielRoseman:当然。我添加了一个更有用的用例的简短描述。