Python字符串函数isidentifier()
我正在阅读Python3的一本书,遇到了字符串函数isidentifier()。文本描述为“s.isidentifier():如果s为非空且为有效标识符,则返回True”。我在Python Shell中进行了如下测试:Python字符串函数isidentifier(),python,string,Python,String,我正在阅读Python3的一本书,遇到了字符串函数isidentifier()。文本描述为“s.isidentifier():如果s为非空且为有效标识符,则返回True”。我在Python Shell中进行了如下测试: >>> s = 'test' >>> s.isidentifier() True >>> 'blah'.isidentifier() True 我希望第二条语句返回false,因为“blah”不在变量中。有人能解释一下吗?谢
>>> s = 'test'
>>> s.isidentifier()
True
>>> 'blah'.isidentifier()
True
我希望第二条语句返回false,因为“blah”不在变量中。有人能解释一下吗?谢谢
如果s为非空且是有效的标识符,则返回True
它们的意思是s可以作为有效的标识符。这并不意味着它是一个正在使用的标识符
您的第一个示例显示了相同的内容:“test”(isidentifier实际检查的内容)也不是变量的名称。我想你是说
>>> 's'.isidentifier()
True
“isidentifier”没有说明被测试字符串引用的“变量”。所以
'blah'.isidentifier()
与相同
s = 'blah'
s.isidentifier()
在Python中,它从不(或很少)涉及“变量”(Python没有变量),而是关于对象。在本例中,字符串。Python没有“变量”。从对象的角度思考会更有帮助
'blah'
在'blah'时肯定存在。isidentifier()
被调用(毕竟它意味着“调用字符串对象的方法'blah'
”)
因此,如果您的理解是正确的,isidentifier()
字符串对象的方法应该总是返回True
,因为在调用时,对象肯定存在
isidentifier()
所做的是检查string对象是否可用作有效标识符。在Python会话中尝试以下两行,例如:
>>> a = "$"
>>> "$".isidentifier()
即使将
“$”
分配给名称a
,调用isidentifier()
也会返回False
,因为$
在Python中不是有效的标识符。isidentifier
是一个Python函数,它只测试字符串是否只包含某些字符(下划线、数字和字母)并以alpha或下划线开头,因此该字符串可用于有效的Python标识符。测试字符类的其他函数有isalpha
、isalnum
、isdigit
等
ss = (
'varABC123',
'123ABCvar',
'_123ABCvar',
'var_ABC_123',
'var-ABC-123',
'var.ABC.123',
# check your own strings
)
fmt = '%-15s%-10s%-10s%-10s%-10s'
print(fmt % ('', 'isalpha', 'isalnum', 'isdigit', 'isidentifier'))
for s in ss:
print(fmt % (s, s.isalpha(), s.isalnum(), s.isdigit(), s.isidentifier()))
结果:
isalpha isalnum isdigit isidentifier
varABC123 False True False True
123ABCvar False True False False
_123ABCvar False False False True
var_ABC_123 False False False True
var-ABC-123 False False False False
var.ABC.123 False False False False
要写出rosscj2533所认为的,我想你可以先做isidentifier(),然后做eval(),看看它是否给你一个NameError。啊,我认为它是当前正在使用的有效标识符。谢谢。@matrixprog-最好在locals()和globals()中测试这个标识符的存在性,而不是求值()。更快更安全。