Это случается со мной слишком часто, когда я пишу функцию, и внезапно осознаю, что было бы неплохо иметь вспомогательную функцию меньшего размера, но не очень полезную где-либо еще. что естественно заставляет меня хотеть определить его внутри как вложенную функцию.
, но у меня был опыт работы с анонимным объектом JAVA (т. Е. Определением исполняемого объекта), и было правило, что анонимный объект создает точную копию своей внешней среды, в данном случае переменных внешней области. Таким образом, если внешняя переменная является неизменяемой (int
, char
), они не могут быть изменены анонимным объектом, поскольку они копируются с помощью value , тогда как если это изменяемая переменная (collection
, * 1008) *) они могут быть изменены ... так как они копируются " указатель " (их адрес в памяти)
если вы знаете о программировании, думайте о нем как о передаче по значению и передаче по ссылке.
в питоне, это очень похоже. x=123
является присваиванием, они дают переменной x новое значение (не изменяет старый x), list[i]/dict[key]
являются операциями доступа к объектам, они действительно изменяют вещи
В заключение, вам нужен изменяемый объект ... для изменения (даже если вы можете получить доступ к кортежу с помощью [], вы не можете использовать его здесь, так как он не изменяемый)