Как определить аргументы функции внутри функции в Python.
Рассмотрим следующий пример:
def fun1():
mysum = 0
def fun2(arg):
mysum += arg
fun2(1)
fun2(2)
fun2(3)
print mysum
Это можно записать как
def fun1():
mysum = 0
def fun2(mysum, arg):
mysum += arg
fun2(mysum, 1)
fun2(mysum, 2)
fun2(mysum, 3)
print mysum
В приведенном выше случае сумма может быть передана как аргумент или нет. Когда определяется, следует ли его передавать в качестве аргумента или нет?
...............
Пожалуйста, не используйте имена переменных, такие как sum или count и т. д., поскольку они являются встроенными функциями
Первая функция недопустима как в Python-2, так и в -3, потому что переменная mysum в fun2 не определена (не объявлена как глобальная). Вторая функция действительна, но бесполезна, потому что она просто увеличивает локальную переменную на единицу. Нет там ничего субъективный.






Это зависит от ситуации. Вы хотите изменить переменную параметра или хотите, чтобы ваша функция изменяла закрытую переменную. Последний может быть менее пригодным для повторного использования, но, в конце концов, это субъективно.
В python3 вы должны использовать либо глобальные, либо нелокальные, чтобы изменять любые закрытые переменные.
def fun1():
sum = 0
def fun2(arg):
nonlocal sum
sum += arg
fun2(sum, 1)
fun2(sum, 2)
fun2(sum, 3)
print sum
это субъективный вопрос ...