Python字符串函数isidentifier()

ros*_*533 3 python string

我正在编写一本Python 3书,并遇到了字符串函数isidentifier().文本描述是"s.isidentifier():如果s非空并且是有效的标识符,则返回True".我在Python Shell中测试了它,如下所示:

>>> s = 'test'
>>> s.isidentifier()
True
>>> 'blah'.isidentifier()
True
Run Code Online (Sandbox Code Playgroud)

我希望第二个语句返回false,因为'blah'不是保存在变量中.有谁能解释一下?谢谢.

Mat*_*ley 12

如果s非空且是有效标识符,则返回True .

他们的意思是s 可以作为标识符有效.它并不意味着它是一个正在使用的标识符.

你的第一个例子显示了同样的事情:'test'(isidentifier实际检查的是什么)也不是变量的名称.我想你的意思

>>> 's'.isidentifier()
True
Run Code Online (Sandbox Code Playgroud)


Jür*_*ard 5

"isidentifier"没有说明正在测试的字符串的"变量".所以

'blah'.isidentifier()
Run Code Online (Sandbox Code Playgroud)

是完全相同的

s = 'blah'
s.isidentifier()
Run Code Online (Sandbox Code Playgroud)

在Python中,它永远(或很少)关于"变量"(Python没有变量),它是关于对象的.在这种情况下,字符串.


Alo*_*hal 5

Python没有"变量".从对象的角度思考更有帮助.

'blah'肯定存在于当时'blah'.isidentifier()被调用(毕竟它意味着"调用isidentifier()字符串对象的方法'blah'").

因此,如果您的理解是正确的,那么isidentifier()字符串对象的方法应该总是返回True,因为在调用时,对象肯定存在.

什么isidentifier()做的是检查字符串对象可以作为一个有效的标识符.例如,在Python会话中尝试这两行:

>>> a = "$"
>>> "$".isidentifier()
Run Code Online (Sandbox Code Playgroud)

即使"$"分配给名称a,isidentifier()调用返回,False因为$它不是Python中的有效标识符.