为什么在调用函数后需要分配此变量?

时间:2019-09-24 17:10:50

标签: python python-2.7 methods variable-assignment

我有以下列表,其中我尝试使用此代码将键的所有首字符更改为大写:

listOfNames = {
    'tim':1,
    'frank':1
}

for name in listOfNames.keys():
    name = name.capitalize()
    print(name)

我注意到,当我省略变量name的分配时,如下所示:

for name in listOfNames.keys():
    name.capitalize()
    print(name)

它会打印出所有键,而不更改它们。现在,如果我正确理解,name只是密钥的副本。但是我在该副本上运行了方法capitalize。为什么我忘记了name = name.capitalize()时却不返回大写键?

1 个答案:

答案 0 :(得分:0)

由于字符串是不可变的,因此无法就地更改,因此调用:

name.capitalize()  #  or any other method

返回一个新字符串,而不是就地修改name,要实现所需的功能,可以使用dict理解:

listOfNames = {
    k.capitalize() : v for k, v in listOfNames.items()
}