我可以在自己的代码中使用“type”这个词还是保留?我的函数头:
def get(
self,
region='Delhi',
city='Delhi',
category='Apartments',
type='For sale',
limit = 60,
PAGESIZE=5,
year=2012,
month=1,
day=1,
next_page=None,
threetapspage=0,
):
谢谢
答案 0 :(得分:38)
使用type
作为函数的关键字参数将掩盖函数范围内的built-in function "type"。因此,虽然这样做不会引起SyntaxError
,但这不是一种好习惯,我会避免这样做。
答案 1 :(得分:10)
都不是。它不是一个保留字(可以在http://docs.python.org/reference/lexical_analysis.html#keywords找到一个列表),但遮蔽任何内置字体通常是个坏主意。
答案 2 :(得分:0)
type
应该绝对被视为保留字。虽然可能很想在数据库字段中使用此词,但请考虑以下事实:type()
是最重要的调试/测试功能之一,因为它告诉您对象的class
。
$ python
>>> x = 5
>>> s = "rockets"
>>> y = [1,2,3]
>>> print(type(x))
class 'int'
>>> print(type(s))
class 'str'
>>> print(type(y))
class 'list'
地图集将归类为一本书,但请考虑使用“类别”一词。
答案 3 :(得分:0)
尽管其他人指出,阴影python内置插件的形式不好,但是只有将函数或函数参数命名为type
时,情况如此-
应该注意,如果将类属性命名为type
,则内置的python type
不会以任何方式被遮盖。
即使引用您的class属性,它也始终以类实例self
或自定义实例变量作为前缀-并且不会阻碍python内置函数。
例如:
>>> class SomeClass():
... type = 'foobar'
...
... def someFunction(self):
... return self.type
>>> def type(): # Overrides python built-in in global scope
... pass
...
>>> def foobar(type):
... return type # Overrides python built-in within func
答案 4 :(得分:0)
阴影内置变量(例如 type
和 id
)的明确缺点:例如,如果您碰巧复制/粘贴了遮盖 id
的代码,然后您替换了你的变量有别的东西,但忘记重命名一个实例所以你仍然使用了悬空 id
,代码在语法上仍然有效,linter 甚至可能找不到错误,但是当您运行代码时,您会得到非常奇怪的结果,因为 id
不会是您预期的字符串或数字。它将是内置函数 id
!
这几次让我很受伤。