Теперь я хочу назначить функцию переменной с именем y, так что если я использую y, она снова вызовет функцию x. если я просто выполняю назначение y = x(), он возвращает None.
Ответ 1
Вы просто не вызываете функцию.
>>>def x():
>>> print(20)
>>>y = x
>>>y()
20
Скобки говорят python, что вы вызываете эту функцию, поэтому, когда вы их там помещаете, она вызывает функцию и присваивает y значение, возвращаемое x (которое в этом случае равно None).
Ответ 2
Когда вы назначаете функцию переменной, вы не используете(), а просто имя функции.
В вашем случае, заданном def x(): ... и переменной silly_var, вы сделали бы что-то вроде этого:
silly_var = x
а затем вы можете вызвать функцию либо с помощью
x()
или
silly_var()
Ответ 3
когда вы выполняете y=x(), вы фактически присваиваете y результатом вызова объекта функции x, а функция имеет возвращаемое значение None. Вызов функций в python выполняется с помощью (). Чтобы назначить x to y, чтобы вы могли вызывать y так же, как и вы, x, присвойте объекту функции x y как y=x и вызовите функцию, используя y()