Foo = "Foo" Защиту бар (Foo): Foo = "бар"Python аргумент функции сфера (Словари v Строки.)
bar(foo)
print foo
# foo is still "foo"...
foo = {'foo':"foo"}
def bar(foo):
foo['foo'] = "bar"
bar(foo)
print foo['foo']
# foo['foo'] is now "bar"?
У меня есть функция, которая была неосторожно помарки мой когда я передаю словарь. Есть ли чистый способ объявить мои параметры как постоянные или я застрял в создании копии словаря внутри функции?
Спасибо!
Справедливо. Я надеялся, что будет что-то вроде ключевого слова const, чтобы сделать это немного приятнее. Большое спасибо! –
Это то место, где я бы сделал бесстыдный плагин для изучения C++. Половина подобных недоразумений на языках высокого уровня объясняется отсутствием понимания того, как работают языки. Если вы потратите время на изучение немного C++, вы начнете обнаруживать, что выделение таких вещей на Python - это то, что они есть, потому что они являются: a) самой быстрой или b) самой простой реализацией. Вам не нужно знать C++, чтобы понять, как работает Python, но это упрощает работу. –
@Shaun: ничто на самом деле не является постоянным в Python (кроме имен ключевых слов, таких как 'None',' True', 'False',' 1', '2' и т. Д.), И в любом случае ключевое слово' const' не помогло бы вы здесь, потому что ваш второй 'bar()' выполняет операцию над объектом с именем 'foo', не изменяя названия. 'const 'предотвращает последнее, но не первое. Тимоти хорошо понимает, что изучение C++ (или C), вероятно, поможет сделать это более ясным. –