Есть мнение, что использование слова file
в качестве имени аргумента функции — это быдлокодерство. Так ли это? Это ведь не зарезервированное слово языка Python, так в чем может быть проблема?
Если посмотреть документацию для 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
Проблема в том, что использование переменных с теми же именами что и у __buitins__
не позволяет в той же области видимости вызывать эти самые __buitins__
. Например, часто переопределяют type
, id
, и если далее по коду необходимо воспользоваться встроенными одноимёнными функциями, то возникают проблемы. Ну и естественно эта проблема распространяется на аргументы функций, которые также распространяются на всю область видимости функции.
Моё мнение — пересечение области видимости с __builtins__
допустимо, но по возможности стараться избегать. Есть случаи, когда просто избежать не получается — например, когда определяешь схему базы данных и у тебя есть колонка с названием id
. Не выкрутишься. В Django
вместо id
предпочтительнее использовать pk
, например, который по умолчанию ссылается на id
.
В общем случае не следует использовать имена, которые конфликтуют со встроенными (dir(__builtins__)
) это может ввести в заблуждение при чтении кода, но file
это специальный случай: file
не является встроенным именем в Питоне 3, а на Питоне 2 следует использовать open()
вместо file()
в подавляющем большинстве случаев.