我是Python的新手。我在Sublime中编写代码时,它会将“input”这个单词标亮。
我将其用作变量名,似乎也能正常工作,所以我想知道它是否在新版本中是一个关键字。(我目前使用的是2.7.5版本)
我是Python的新手。我在Sublime中编写代码时,它会将“input”这个单词标亮。
我将其用作变量名,似乎也能正常工作,所以我想知道它是否在新版本中是一个关键字。(我目前使用的是2.7.5版本)
不,input
不是关键字。相反,它是一个内置函数。
而且,你是可以用 input
这个名字来创建一个变量的。但请不要这样做。这么做是个坏习惯,因为它会掩盖掉内置函数(在当前作用域中无法使用)。
如果你必须使用这个名字,习惯上是在后面加一个下划线:
input_ = input()
inp
几次了。 - user2555451__builtins__
来引用它。 - Peter DeGlopperiterable
或value
。内置函数filter
的输入分别命名为function
和iterable
。 - Steve Jessopinputs
作为替代变量名。 - wisbuckyclass
或def
。没有关于掩盖现有名称的约定,您只是使用另一种约定进行了编写。只要代码不是面向初学者,掩盖现有名称就完全可以(否则语言将阻止它),因此在专业环境中,在本地重新定义id
或input
并不是问题。 - Ericinput
不是一个关键字,而是由标准库提供的函数,包含在 builtins
模块中(该模块提供全局可访问的变量和函数):
>>> import builtins
>>> input is builtins.input
True
当然,你可以创建一个名为input
的变量。对于有经验和中级用户来说,这样做是完全可以的,因为他们可以很容易地发现input
名称已被重用。
使用最适合传达内容/意图的名称。如果input
是最好的选择,那就使用它(前提是你不需要内置函数),不要用像input_
这样的名称来混淆读者(初学者会想知道尾随下划线是否有特殊含义)。
但如果你是初学者,请不要重新定义内置函数,通过遮盖内置的input
(遮盖变量会使其在当前范围内无法使用),当你稍后在同一范围内调用input()
时,你将遇到此错误,并且可能难以找出原因:
TypeError: 'str' object is not callable
初学者应该使用另一个名称,最好不要使用input_
,因为在Python中下划线具有特殊含义,这样其他初学者就会想知道那个尾部下划线是否有特殊含义(它与前导下划线相同或相关吗?或者可能与双下划线有关吗?)
在另一条评论中,有人表示遮盖变量是一种不好的做法,他甚至提出了一种从其他用途借鉴的约定。毕竟,如果遮盖变量真的是一种很糟糕的做法,Python语言设计者一开始就不会允许它存在,但他们知道并承认它有改善可读性的潜力,就像其他语言一样。所以他们允许了它,并且它还可以方便从其他允许遮盖的语言(如C/C++、Java甚至bash)过渡到Python。
注意:尾部下划线的常规用法是在无法使用名称时,比如Python中的关键字class
。然后你可以使用class_
(但正如我上面写的,最好在Python中避免使用它,因为下划线可能会让初学者感到困惑,因为它们可能传达特殊含义)