python modify a dictionary inside a method
是否可以在不将字典作为参数传递的情况下修改函数内字典的值?
我不想返回字典,只想修改它的值。
这是可能的,但不一定是明智的,我无法想象为什么你不想通过或返回字典,如果你只是不想返回字典,但可以通过它,你可以修改它以反映在原始字典中,而不必返回,例如:
1 2 3 4 5 6 7 8 | dict = {'1':'one','2':'two'} def foo(d): d['1'] = 'ONE' print dict['1'] # prints 'one' original value foo(dict) print dict['1'] # prints 'ONE' ie, modification reflects in original value # so no need to return it |
但是,如果您出于任何原因无法传递它,则可以使用以下全局字典:
1 2 3 4 5 6 7 8 9 10 11 | global dict # declare dictionary as global dict = {'1':'one','2':'two'} # give initial value to dict def foo(): global dict # bind dict to the one in global scope dict['1'] = 'ONE' print dict['1'] # prints 'one' foo(dict) print dict['1'] # prints 'ONE' |
我建议使用第一个代码块中演示的第一个方法,但如果绝对必要,可以随意使用第二个方法。享受:
可以,Dictionary是一个可变的对象,因此可以在函数中修改它们,但必须在实际调用函数之前对其进行定义。
要更改指向不可变对象的全局变量的值,必须使用
1 2 3 4 5 6 7 | >>> def func(): ... dic['a']+=1 ... >>> dic = {'a':1} #dict defined before function call >>> func() >>> dic {'a': 2} |
对于不可变对象:
1 2 3 4 5 6 7 8 | >>> foo = 1 >>> def func(): ... global foo ... foo += 3 #now the global variable foo actually points to a new value 4 ... >>> func() >>> foo 4 |