Python 在函数中修改字典而不使用return语句

Python 在函数中修改字典而不使用return语句,python,function,dictionary,return,Python,Function,Dictionary,Return,我正在尝试修改函数中的字典。因为字典是可变的数据类型。我想知道是否需要一份返回声明 e、 g: 您的modify dict没有修改变量。它正在重新绑定它 尝试: 没有。。您不需要“返回”。您的修改指令没有修改变量。它正在重新绑定它 尝试: 没有。。您不需要“返回”。当您在函数内部重新分配一个dict时,您实际上是在创建一个与函数范围外的dictionary同名的新dictionary。如果您更新词典,更改将在函数范围外可见,但您正在重新分配名称。当您在函数内重新分配一个dict时,您实际上是在创

我正在尝试修改函数中的字典。因为字典是可变的数据类型。我想知道是否需要一份返回声明

e、 g:


您的modify dict没有修改变量。它正在重新绑定它

尝试:


没有。。您不需要“返回”。

您的修改指令没有修改变量。它正在重新绑定它

尝试:


没有。。您不需要“返回”。

当您在函数内部重新分配一个dict时,您实际上是在创建一个与函数范围外的dictionary同名的新dictionary。如果您更新词典,更改将在函数范围外可见,但您正在重新分配名称。

当您在函数内重新分配一个dict时,您实际上是在创建一个与函数范围外的词典同名的新词典。如果您更新字典,更改将在功能范围之外可见,但您正在重新分配名称。

虽然您可以就地修改dict,但您正在将堆栈变量
a_dict
分配给新字典,这与更改dict中的值不同。您想要的是:

test={'k1':'v1','k2':'v2'}
def更改指令(d、k、新):
d[k]=新的
变更(测试“k1”、“变更”)
测试['k1']
#“改变”

虽然您可以就地修改dict,但您正在将堆栈变量
a_dict
分配给一个新的字典,这与更改dict中的值不同。您需要类似以下内容:

test={'k1':'v1','k2':'v2'}
def更改指令(d、k、新):
d[k]=新的
变更(测试“k1”、“变更”)
测试['k1']
#“改变”

Python对象变量是引用。
python中的赋值运算符不处理值本身,而是处理那些引用

a=[1,2]#创建对象[1,2]
b=[3,4]#创建对象[3,4]
#a现在引用[1,2]
#b现在引用[3,4]
c=a
#c现在也引用了[1,2]
c=[5,6]#创建对象[5,6]
#c现在引用了[5,6],忘记了[1,2]。
#这不会更改[1,2]对象。
这同样适用于函数调用:

def modify_dict(一个_dict、一个_键、一个_值):
#dict是对函数参数的引用
a_dict={a_键:a_值}创建一个新的dict
#现在,一个字典引用了那个新字典,忘记了它是什么
#以前是引用。
#这不会影响作为参数给出的对象
我认为这里要理解的关键概念是函数中的参数是对对象的引用,而不是对象本身

要实际更改a_dict,您需要直接访问它,而不是分配给它,如:

def modify_dict(一个_dict、一个_键、一个_值):
a_dict[a_键]=a_值

Python对象变量是引用。
python中的赋值运算符不处理值本身,而是处理那些引用

a=[1,2]#创建对象[1,2]
b=[3,4]#创建对象[3,4]
#a现在引用[1,2]
#b现在引用[3,4]
c=a
#c现在也引用了[1,2]
c=[5,6]#创建对象[5,6]
#c现在引用了[5,6],忘记了[1,2]。
#这不会更改[1,2]对象。
这同样适用于函数调用:

def modify_dict(一个_dict、一个_键、一个_值):
#dict是对函数参数的引用
a_dict={a_键:a_值}创建一个新的dict
#现在,一个字典引用了那个新字典,忘记了它是什么
#以前是引用。
#这不会影响作为参数给出的对象
我认为这里要理解的关键概念是函数中的参数是对对象的引用,而不是对象本身

要实际更改a_dict,您需要直接访问它,而不是分配给它,如:

def modify_dict(一个_dict、一个_键、一个_值):
a_dict[a_键]=a_值
没有,因为在这里您重新分配了一个dict,您不会对它进行变异。阅读:不,因为在这里你重新分配了一个dict,你不会对它进行变异。请阅读以下内容:
def modify_dict(a_dict,a_key,a_value):
    a_dict = {a_key:a_value}

# Why wouldn't the function actually modify the dictionary? 
# Wouldn't the dictionary still be changed to sample_dict={e_key:e_value} anyways?

sample_dict = {b_key:b_value,c_key:c_value,d_key:d_value}
modify_dict(sample_dict,e_key,e_value)
def modify_dict(a_dict,a_key,a_value):
    a_dict[a_key] = a_value