Форум сайта python.su
16
Здравствуйте, подскажите, пожалуйста, как правильно передать список из первой функции второй:
def f1(): l = [1, 2, 3, 4, 5] return l def f2(): l.append(1) return l print(f2())
Офлайн
103
def f1(): l = [1, 2, 3, 4, 5] return l def f2(): l = f1() l.append(1) return l print(f2())
def f1(): l = [1, 2, 3, 4, 5] f2(l) return l def f2(l): l.append(1) print(f1())
Офлайн
16
Спасибо большое, а будет ли правильным такой вариант:
def f1(): l = [1, 2, 3, 4, 5] def f2(l): l.append(1) return l print(f1())
Офлайн
103
Strightпрост практического смысла почти нету, а проблем будет больше
Или вложение объявления одной функции в объявление другой лучше избегать?
Офлайн
23
присоеденяюсь к вопросу
а почему бы не передать результат выполнения 1 функции аргументом второй?
def f(): lst = [1, 2] return lst def f2(arg): lst = [3, 4] lst.extend(arg) return lst r = f() print f2(r)
Отредактировано vrabey (Фев. 25, 2015 22:41:43)
Офлайн
16
vrabeyА тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
а почему бы не передать результат выполнения 1 функции аргументом второй?

Stright
Знаю, что можно присвоить результат какой-либо глобальной переменной, но в этом случае пользоваться глобальными переменными, наверное, будет неправильно.
Офлайн
-1
Stright
Вкладывать функции друг в друга можно, если это нужно.
То есть это разрешается, насколько я знаю.
Офлайн
16
Да, можно, в книге “Изучаем Python” Лутца с помощью вложенных функций объясняются nonlocal переменные, да и при решении одной задачи (упрощенная схема в первом посте) первой мыслью было так и сделать, но потом, когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то 
Офлайн
23
Strightтак не создавайте промежуточную переменную
А тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
print f2(f())
Офлайн
103
vrabeyлишняя переменная, да и зачем?
а почему бы не передать результат выполнения 1 функции аргументом второй?
Strightа условие задания какое? может мы поможем сделать еще лучше!
когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то
Офлайн