2012-04-27 6 views
32

Допустим, у меня есть функцияНазначение функции переменной

def x(): 
    print(20) 

Теперь я хочу, чтобы присвоить функцию переменной называется y, так что, если я использую y вызывает функцию x снова. если я просто выполняю назначение y = x(), он возвращает None.

+0

Я редактировал свой вопрос, чтобы сократить его до [соответствующей информации только.] (http://meta.stackexchange.com/a/128552/102937). Ваш энтузиазм велик, но в будущем, пожалуйста, сосредоточьтесь на объяснении своего фактического вопроса. –

+0

Я также отредактировал то, что вы хотите сделать здесь: * назначить функцию переменной *, а не * присваивать переменную функции *. –

ответ

64

Вы просто не вызываете функцию.

>>>def x(): 
>>> print(20) 
>>>y = x 
>>>y() 
20 

Кронштейнов сказать питону, что вы вызываете функцию, поэтому, когда вы положили их там, он вызывает функцию и присваивает y значение возвращенного по x (который в данном случае является None).

+1

Функции как первоклассные объекты, * oh yeah *. –

+0

Большое спасибо. До сих пор я как-то думал, что я был довольно приличным в Python: D – geekkid

+2

@geekkid: Стоит отметить, что ** любой ** объект может быть сделан «вызываемым», как функция. Все, что вам нужно сделать, это определить метод '__call __()' объекта. –

10

При назначении функции переменной вы используете , а не используйте(), а просто имя функции.

В вашем случае данный def x(): ..., и переменная silly_var вы могли бы сделать что-то вроде этого:

silly_var = x 

, а затем вы можете вызвать функцию либо с

x() 

или

silly_var() 
5

при выполнении y=x() вы действительны назначая y на результат вызова объекта функции x, и функция имеет возвращаемое значение None. Вызовы функций в python выполняются с использованием (). Чтобы назначить x to y, так что вы можете назвать y так же, как вы бы x присвоить объект функции х к у, как y=x и вызвать функцию с помощью y()

Смежные вопросы