weranda
@weranda

Почему функция и переменная не могут одинаково называться?

Приветствую

In [1]: xxx = '123'

In [2]: def xxx():
   ...:     pass

In [3]: xxx
Out[3]: <function __main__.xxx()>

In [4]: type(xxx)
Out[4]: function


Почему так происходит в Python?
  • Вопрос задан
  • 499 просмотров
Решения вопроса 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
Более-менее корректный ответ мог бы выглядеть так.

Большинство "слов" в коде на Python -- это имена-ссылки на объекты Python.

И функции, и "переменные" -- это объекты Python.

В любом пространстве имён могут хранится имена-ссылки как на функции, так и на "переменные".

Имена в каждом пространстве имён уникальны, поэтому нельзя одинаково назвать и функцию, и переменную. При попытке так сделать, что-то новое займёт имя-ссылку чего-то старого.

То же самое относится к классам, к объектам классов, к полям и методам классов и пр. Все объекты Python либо занимают уникальные имена в неком пространстве имён, либо не занимают вовсе (например, числа в списке доступны не по имени, а по индексу).

P.S. Спасибо, вопрос поднял настроение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562
I'm cool!
Потому что, функция - переменная хранящая значение.
def add(x, y):
    return x + y
    
add = 123

print add

// 123


add = 123
    
def add(x, y):
    return x + y
    
print add

// <function add at 0x7f7e688f37d0>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы