Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Слово file в python

#python


Есть мнение, что использование слова file в качестве имени аргумента функции - это
быдлокодерство. Так ли это? Это ведь не зарезервированное слово языка Python, так в
чем может быть проблема?
    


Ответы

Ответ 1



Проблема в том, что использование переменных с теми же именами что и у __buitins__ не позволяет в той же области видимости вызывать эти самые __buitins__. Например, часто переопределяют type, id, и если далее по коду необходимо воспользоваться встроенными одноимёнными функциями, то возникают проблемы. Ну и естественно эта проблема распространяется на аргументы функций, которые также распространяются на всю область видимости функции. Моё мнение - пересечение области видимости с __builtins__ допустимо, но по возможности стараться избегать. Есть случаи, когда просто избежать не получается - например, когда определяешь схему базы данных и у тебя есть колонка с названием id. Не выкрутишься. В Django вместо id предпочтительнее использовать pk, например, который по умолчанию ссылается на id.

Ответ 2



В общем случае не следует использовать имена, которые конфликтуют со встроенными (dir(__builtins__)) это может ввести в заблуждение при чтении кода, но file это специальный случай: file не является встроенным именем в Питоне 3, а на Питоне 2 следует использовать open() вместо file() в подавляющем большинстве случаев.

Ответ 3



Если посмотреть документацию для open в python 3, то мы увидим что первый аргумент назван как file. Конечно существует вероятность того, что среди разработчиков python есть "быдлокодеры", но я думаю, что никаких препятствий к использованию слова file в аргументе нет. Help on built-in function open in module io: open(...) open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -> file object

Комментариев нет:

Отправить комментарий