Могу ли я использовать имя переменной «тип» в качестве аргумента функции в Python? - PullRequest
19 голосов
/ 10 марта 2010

Могу ли я использовать type в качестве имени для аргумента функции python?

def fun(name, type):
    ....

Ответы [ 5 ]

34 голосов
/ 10 марта 2010

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

Хотя для небольшого проекта, в котором не используется type, это, вероятно, не будет иметь значения, но лучше избегать привычки использовать имена ключевых слов / встроенных модулей. Python Style Guide предоставляет решение для этого, если вам абсолютно необходимо использовать имя, которое конфликтует с ключевым словом:

single_trailing_underscore_: используется Конвенция, чтобы избежать конфликтов с Ключевое слово Python, например,

7 голосов
/ 10 марта 2010

Можно, и это нормально. Несмотря на то, что совет не использовать теневые встроенные функции важен, он более силен, если идентификатор является общим, поскольку это приведет к путанице и коллизиям. Он не появляется type , что может привести к путанице (но вы узнаете об этом больше, чем кто-либо другой), и я мог бы использовать именно то, что у вас есть.

3 голосов
/ 10 марта 2010

Вы можете использовать любое не ключевое слово, которое следует правилам идентификатора, в качестве идентификатора. type не является ключевым словом, но его использование затеняет встроенное type.

2 голосов
/ 10 марта 2010

Можно, но вы будете маскировать встроенный тип имени. Так что лучше этого не делать.

0 голосов
/ 30 мая 2017

Вы можете использовать _type для этого

#  Example
def foo(_type):
    pass

Если вы используете type, вы не можете использовать type() в этой функции

>>> #For Example
>>> type('foo')
<type 'str'>
>>> type = 'bar'
>>> type('foo')
...
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'str' object is not callable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...