Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换函数中的对象引用 def修改(命令): alt_dict=a_dict.copy() alt_dict['s']=2 a_dict=alt_dict a_字典={} a_字典[f']=5 修改(字典) 印刷(字典)_Python - Fatal编程技术网

Python 替换函数中的对象引用 def修改(命令): alt_dict=a_dict.copy() alt_dict['s']=2 a_dict=alt_dict a_字典={} a_字典[f']=5 修改(字典) 印刷(字典)

Python 替换函数中的对象引用 def修改(命令): alt_dict=a_dict.copy() alt_dict['s']=2 a_dict=alt_dict a_字典={} a_字典[f']=5 修改(字典) 印刷(字典),python,Python,预期的结果是,一个_字典现在也将包含键's'。我知道列表和字典是作为可变项通过引用传递的,但是有没有一种方法可以像我在上面尝试的那样更新函数中的引用?。。还是有更好的办法 为了澄清,我确实需要制作一个副本,因为如果发生异常,我在代码中的实际函数中所做的更改可能会被放弃。您可以: def modify(a_dict): alt_dict = a_dict.copy() alt_dict['s'] = 2 # do lots of stuff # make sure

预期的结果是,一个_字典现在也将包含键's'。我知道列表和字典是作为可变项通过引用传递的,但是有没有一种方法可以像我在上面尝试的那样更新函数中的引用?。。还是有更好的办法

为了澄清,我确实需要制作一个副本,因为如果发生异常,我在代码中的实际函数中所做的更改可能会被放弃。

您可以:

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    # do lots of stuff

    # make sure all changes are "backported"
    a_dict.update(alt_dict)
你可以做:

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    # do lots of stuff

    # make sure all changes are "backported"
    a_dict.update(alt_dict)

将新对象指定给局部变量对您没有帮助。但是,由于字典是可变的,您可以在给定新数据的情况下清除并更新原始字典:

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    a_dict.clear()
    a_dict.update(alt_dict)

将新对象指定给局部变量对您没有帮助。但是,由于字典是可变的,您可以在给定新数据的情况下清除并更新原始字典:

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    a_dict.clear()
    a_dict.update(alt_dict)

退回修改过的副本怎么样

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    return alt_dict

a_dictionary = {}
a_dictionary['f'] = 5

a_dictionary = modify(a_dictionary)
print(a_dictionary)

退回修改过的副本怎么样

def modify(a_dict):
    alt_dict = a_dict.copy()
    alt_dict['s'] = 2
    return alt_dict

a_dictionary = {}
a_dictionary['f'] = 5

a_dictionary = modify(a_dictionary)
print(a_dictionary)

不幸的是,我在实际代码中返回了其他内容,这就是为什么我需要通过引用来完成它,但这是一个好方法suggestion@JackAvantePython中的函数可以返回任意数量的对象。不幸的是,我在实际代码中返回了其他东西,这就是为什么我需要通过引用来实现它,但这是个好主意suggestion@JackAvantePython中的函数可以返回任意数量的对象。