Присвоение функции переменной с таким же именем (как и функция)

Увидел решение задачи в данном варианте.

def mycount():
# Счётчик повторений
enter = 0

def number():
    nonlocal enter
    enter += 1
    print("Вход номер: " + str(enter))

return number

mycount = mycount()
mycount()
mycount()
mycount()

Но не могу разобраться, почему функции присваивают значения переменным. У этих переменных и функций используется одинаковые имена.

Как это работает?


Ответы (1 шт):

Автор решения: Kers

Возможно это просто обучающий пример того что функция может быть присвоена переменной а с именем на стали что-то придумывать. Да и ошибки в коде есть. Немного переписал Ваш пример для демонстрации.

def mycount():
    print("HELLO")
    return "WORLD!!!"

def mc2():
    print("world")

# присвоение функции без ()
# со () вы присваиваете возвращаемое значение из  функции.
mycount = mycount
mycount() # HELLO
mycount = mycount() # тоже выведет в консоль HELLO так как функция отработала.
print(mycount) # WORLD!!! так как это возвращаемое значение

mycount =mc2 # переопределение переменной
mycount() # world 

Имхо весьма плохая практика вносящая путаницу.

→ Ссылка