Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 25, 2017 08:44:56

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

 def a(c):
    print("111")
    return c
def b():
    print("222")
a(b)

111
Подскажите, почему не исполняется тело функции b, если она передана в качестве аргумента?

Офлайн

#2 Окт. 25, 2017 09:01:07

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

 a(b())

Офлайн

#3 Окт. 25, 2017 09:03:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

??? Потому что в соответствии с правилами языка она и не должна у вас исполняться.

Если у вас есть предложения по совершенствованию языка то напишите когда она по вашему должна была выполниться до print(111) или после, если функция из a будет передана в d то она должна два раза выполняться, как тогда сделать выполнение 1 раз? И чем это лучше традиционного подхода.



Офлайн

#4 Окт. 25, 2017 11:30:42

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

Vigi
Серьезно?
Franek
вы наверное хотели сделать

     return c()
В вашем коде вы передаете объект функции, вызов функции делается через конструкцию () ,вы его не сделали



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Окт. 25, 2017 13:31:43

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

JOHN_16
Vigi
Серьезно?
Ну да, а что не так?
Вопрос был:
“почему не исполняется тело функции b”
я показал как сделать, что бы функция b отработала…

Отредактировано Vigi (Окт. 25, 2017 13:35:39)

Офлайн

#6 Окт. 25, 2017 18:13:02

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

Vigi
JOHN_16
спасибо, понял.
Подскажите, еще, пожалуйста.

 def newfunc(n):
    def myfunc(x):
        return x + n
    return myfunc
new = newfunc(100)  # new - это функция
new(200)
300
В предпоследней строке кода число 100 передается функцииnewfunc в параметр n. Но как число 200 передается в параметр x функции myfunc если new - это функция newfunc?

Офлайн

#7 Окт. 25, 2017 20:42:53

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

Franek
VigiJOHN_16спасибо, понял.Подскажите, еще, пожалуйста.
чето мне кажеться что вы пытаетесь изобрести декораторы
Franek
если new - это функция newfunc?
нет, new, это myfunc, ведь результатом выполнения newfunc() являеться myfunc
 def newfunc(n):
    .......
    return myfunc
на хабре есть пару статей на тему декораторов, достаточно просто и понятно как по мне, буквально от простого к сложному, шаг за шагом:
https://habrahabr.ru/post/141411/
https://habrahabr.ru/post/141501/



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 25, 2017 20:44:23)

Офлайн

#8 Окт. 26, 2017 08:41:14

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

PEHDOM
спасибо, интересные статьи.

Офлайн

#9 Окт. 26, 2017 15:00:07

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

Vigi
из контекста можно было догадаться что речь идет не о принятии в качестве аргумента объекта и его последующего возврата без изменений. Но соглашусь что возможно это было очевидно не для всех, поэтому я может погорячился с этим.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Окт. 26, 2017 15:22:05

Vigi
От: Курья, Алтай
Зарегистрирован: 2015-02-07
Сообщения: 144
Репутация: +  8  -
Профиль   Отправить e-mail  

Работа функций - подскажите.

JOHN_16
из контекста можно было догадаться что речь идет не о принятии в качестве аргумента объекта и его последующего возврата без изменений.
Возможно. Что-то у меня с “вангованием” в тот день было не очень Каков вопрос таков и ответ.

JOHN_16
это было очевидно не для всех
ну да может и не для всех.)) Я специально ответил от противного давая понять автору, что вопросы нужно задавать более корректными (что бы не заниматься гаданием).

JOHN_16
поэтому я может погорячился с этим.
Да нормально, я вроде не обжёгся

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version