我正在编写一本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)
"isidentifier"没有说明正在测试的字符串的"变量".所以
'blah'.isidentifier()
Run Code Online (Sandbox Code Playgroud)
是完全相同的
s = 'blah'
s.isidentifier()
Run Code Online (Sandbox Code Playgroud)
在Python中,它永远(或很少)关于"变量"(Python没有变量),它是关于对象的.在这种情况下,字符串.
Python没有"变量".从对象的角度思考更有帮助.
'blah'肯定存在于当时'blah'.isidentifier()被调用(毕竟它意味着"调用isidentifier()字符串对象的方法'blah'").
因此,如果您的理解是正确的,那么isidentifier()字符串对象的方法应该总是返回True,因为在调用时,对象肯定存在.
什么isidentifier()做的是检查字符串对象可以作为一个有效的标识符.例如,在Python会话中尝试这两行:
>>> a = "$"
>>> "$".isidentifier()
Run Code Online (Sandbox Code Playgroud)
即使"$"分配给名称a,isidentifier()调用返回,False因为$它不是Python中的有效标识符.