0

调用此函数时出现错误SyntaxError: keyword can't be an expression

def printAlbum(**albums):
        for year in albums:
                print year, albums[year]

printAlbum(2002='by the way', 1999='californication', 2006 = 'stadium arcadium')

使用字母键调用该函数没有问题。我尝试在键周围加上引号并将其替换为=:但这并没有解决问题。我可以将数字键传递给函数吗?

4

2 回答 2

0
printAlbum(2002='by the way', 1999='californication', 2006 = 'stadium arcadium')

是非法语法,因为关键字必须是有效的标识符。

您必须重写printAlbum以获取简单的dict

def printAlbum(albums):
    for year, album in albums.items:
        print year, album

printAlbum({2002:'by the way', 1999:'californication', 2006:'stadium arcadium'})

请注意,让函数的关键字参数被认为是非标识符是一个坏主意——在这种情况下,永远不可能只使用关键字参数合法地调用函数。

于 2013-03-31T07:37:09.323 回答
0

关键字 args 的键必须是有效的 python 标识符,例如不能以数字开头。

相反,传递一个字典:

def printAlbum(albums):
        for year in albums:
                print year, albums[year]

printAlbum(
{ 2002: 'by the way', 1999: 'californication', 2006:'stadium arcadium'}
)
于 2013-03-31T07:37:44.153 回答