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

Why do I need to assign this variable after call of function?

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

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() 时 return 不是大写的键?

因为字符串是不可变的,它们不能就地改变,所以调用:

name.capitalize()  #  or any other method

returns 一个新字符串,而不是就地修改 name,要实现你想要的,你可以使用字典理解:

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