Найти - Пользователи
Полная версия: Работа функций - подскажите.
Начало » Python для новичков » Работа функций - подскажите.
1 2
Franek
 def a(c):
    print("111")
    return c
def b():
    print("222")
a(b)

111
Подскажите, почему не исполняется тело функции b, если она передана в качестве аргумента?
Vigi
 a(b())
doza_and
??? Потому что в соответствии с правилами языка она и не должна у вас исполняться.

Если у вас есть предложения по совершенствованию языка то напишите когда она по вашему должна была выполниться до print(111) или после, если функция из a будет передана в d то она должна два раза выполняться, как тогда сделать выполнение 1 раз? И чем это лучше традиционного подхода.
JOHN_16
Vigi
Серьезно?
Franek
вы наверное хотели сделать
     return c()
В вашем коде вы передаете объект функции, вызов функции делается через конструкцию () ,вы его не сделали
Vigi
JOHN_16
Vigi
Серьезно?
Ну да, а что не так?
Вопрос был:
“почему не исполняется тело функции b”
я показал как сделать, что бы функция b отработала…
Franek
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?
PEHDOM
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/
Franek
PEHDOM
спасибо, интересные статьи.
JOHN_16
Vigi
из контекста можно было догадаться что речь идет не о принятии в качестве аргумента объекта и его последующего возврата без изменений. Но соглашусь что возможно это было очевидно не для всех, поэтому я может погорячился с этим.
Vigi
JOHN_16
из контекста можно было догадаться что речь идет не о принятии в качестве аргумента объекта и его последующего возврата без изменений.
Возможно. Что-то у меня с “вангованием” в тот день было не очень Каков вопрос таков и ответ.

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

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

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