Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2015 21:51:25

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Здравствуйте, подскажите, пожалуйста, как правильно передать список из первой функции второй:

def f1():
    l = [1, 2, 3, 4, 5]
    return l
def f2():
    l.append(1)
    return l
print(f2())
Знаю, что можно присвоить результат какой-либо глобальной переменной, но в этом случае пользоваться глобальными переменными, наверное, будет неправильно.

Офлайн

#2 Фев. 25, 2015 22:00:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

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())



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Фев. 25, 2015 22:14:57

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Спасибо большое, а будет ли правильным такой вариант:

def f1():
    l = [1, 2, 3, 4, 5]
    def f2(l):
        l.append(1)
    return l
print(f1())
Или вложение объявления одной функции в объявление другой лучше избегать?

Офлайн

#4 Фев. 25, 2015 22:39:20

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Stright
Или вложение объявления одной функции в объявление другой лучше избегать?
прост практического смысла почти нету, а проблем будет больше



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Фев. 25, 2015 22:39:51

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

присоеденяюсь к вопросу
а почему бы не передать результат выполнения 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)

Офлайн

#6 Фев. 25, 2015 22:53:18

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

vrabey
а почему бы не передать результат выполнения 1 функции аргументом второй?
А тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
Stright
Знаю, что можно присвоить результат какой-либо глобальной переменной, но в этом случае пользоваться глобальными переменными, наверное, будет неправильно.

Офлайн

#7 Фев. 25, 2015 22:59:12

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Stright
Вкладывать функции друг в друга можно, если это нужно.
То есть это разрешается, насколько я знаю.

Офлайн

#8 Фев. 25, 2015 23:06:11

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Да, можно, в книге “Изучаем Python” Лутца с помощью вложенных функций объясняются nonlocal переменные, да и при решении одной задачи (упрощенная схема в первом посте) первой мыслью было так и сделать, но потом, когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то

Офлайн

#9 Фев. 25, 2015 23:09:32

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

Stright
А тут как раз и получается, что r - глобальная переменная, к использованию которой я не хотел прибегать
так не создавайте промежуточную переменную
print f2(f())

Офлайн

#10 Фев. 25, 2015 23:10:37

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Передача результата первой функции в качестве аргумента для второй

vrabey
а почему бы не передать результат выполнения 1 функции аргументом второй?
лишняя переменная, да и зачем?
Stright
когда вложенных функций получилось больше чем хотелось бы, появилась мысль, что что-то здесь не то
а условие задания какое? может мы поможем сделать еще лучше!



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version