Найти - Пользователи
Полная версия: Передача результата первой функции в качестве аргумента для второй
Начало » Python для новичков » Передача результата первой функции в качестве аргумента для второй
1 2 3
Stright
Здравствуйте, подскажите, пожалуйста, как правильно передать список из первой функции второй:
def f1():
    l = [1, 2, 3, 4, 5]
    return l
def f2():
    l.append(1)
    return l
print(f2())
Знаю, что можно присвоить результат какой-либо глобальной переменной, но в этом случае пользоваться глобальными переменными, наверное, будет неправильно.
terabayt
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())
Stright
Спасибо большое, а будет ли правильным такой вариант:
def f1():
    l = [1, 2, 3, 4, 5]
    def f2(l):
        l.append(1)
    return l
print(f1())
Или вложение объявления одной функции в объявление другой лучше избегать?
terabayt
Stright
Или вложение объявления одной функции в объявление другой лучше избегать?
прост практического смысла почти нету, а проблем будет больше
vrabey
присоеденяюсь к вопросу
а почему бы не передать результат выполнения 1 функции аргументом второй?

def f():
    lst = [1, 2]
    return lst
def f2(arg):
    lst = [3, 4]
    lst.extend(arg)
    return lst
r = f()
print f2(r)
собственно изначально вопрос так и поставлен
Stright
vrabey
а почему бы не передать результат выполнения 1 функции аргументом второй?
А тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
Stright
Знаю, что можно присвоить результат какой-либо глобальной переменной, но в этом случае пользоваться глобальными переменными, наверное, будет неправильно.
MiK
Stright
Вкладывать функции друг в друга можно, если это нужно.
То есть это разрешается, насколько я знаю.
Stright
Да, можно, в книге “Изучаем Python” Лутца с помощью вложенных функций объясняются nonlocal переменные, да и при решении одной задачи (упрощенная схема в первом посте) первой мыслью было так и сделать, но потом, когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то
vrabey
Stright
А тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
так не создавайте промежуточную переменную
print f2(f())
terabayt
vrabey
а почему бы не передать результат выполнения 1 функции аргументом второй?
лишняя переменная, да и зачем?
Stright
когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то
а условие задания какое? может мы поможем сделать еще лучше!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB