Python 函数调用中后跟**kwargs的形式函数参数

Python 函数调用中后跟**kwargs的形式函数参数,python,keyword-argument,Python,Keyword Argument,我理解函数参数必须具有以下顺序层次结构: 形式位置参数 *args 关键字参数 **夸尔斯 我得到了这个错误: SyntaxError:关键字不能是表达式 在下文中: def dfDiff(old, new, **kwargs): # default dict of optional function arguments d = {'city': 'Austin', 'capital': True, 'indx' : 5} # if o

我理解函数参数必须具有以下顺序层次结构:

形式位置参数 *args 关键字参数 **夸尔斯 我得到了这个错误:

SyntaxError:关键字不能是表达式

在下文中:

def dfDiff(old, new, **kwargs):
    # default dict of optional function arguments
    d = {'city': 'Austin',
         'capital': True,
         'indx' : 5}
    # if optional args are provided 
    if kwargs is not None:
        # find the common keys
        k_passed = kwargs.keys() & d.keys()
        # change the default value
        for k in k_passed:
            d[k] = kwargs[k]    


test_ = dfDiff(1, 2, 'city' = 'Albany')

我是否错误地通过**kwargs或存在其他问题

正如@MichaelBianconi在评论中所说,在给出关键字参数时,不需要将它们作为字符串括起来。把它们当作变量来对待。 所以正确的代码是:

test_ = dfDiff(1, 2, city = 'Albany')
根据指导原则,关键字、等于和值之间没有空格

test_ = dfDiff(1, 2, city='Albany')

正如@MichaelBianconi在评论中所说,在给出关键字参数时,不需要将它们作为字符串括起来。把它们当作变量来对待。 所以正确的代码是:

test_ = dfDiff(1, 2, city = 'Albany')
根据指导原则,关键字、等于和值之间没有空格

test_ = dfDiff(1, 2, city='Albany')

city='Albany',不要用引号括住城市。

city='Albany',不要用引号括住城市。

city='Albany',不要用引号括住城市。@MichaelBianconi,谢谢,如果你愿意回答,我会把它标记为acceptedtest\uDfDiff1,2,“city”=“Albany”试图将表达式“city”=“Albany”的值赋值为**kwargs`。正如您所发现的,Python不允许表达式作为关键字参数。city='Albany',不要用引号将city括起来。@MichaelBianconi,谢谢,如果您愿意回答,我会将其标记为acceptedtest\uUfDiff1,2,'city'='Albany'尝试将表达式'city'='Albany'的值赋给**kwargs`。正如您所发现的,Python不允许表达式作为关键字参数。