Python 字符串函数 isidentifier()

3 投票
4 回答
6941 浏览
提问于 2025-04-15 17:36

我正在学习一本关于Python 3的书,遇到了一个字符串函数叫做isidentifier()。书上是这样描述的:“s.isidentifier() : 如果s不是空的并且是一个有效的标识符,就返回True。”我在Python的命令行里测试了一下,像这样:

>>> s = 'test'
>>> s.isidentifier()
True
>>> 'blah'.isidentifier()
True

我本来以为第二个语句会返回false,因为'blah'并没有被存储在一个变量里。有人能解释一下吗?谢谢。

4 个回答

5

"isidentifier" 并没有说明被测试的字符串是由哪个“变量”引用的。所以

'blah'.isidentifier()

s = 'blah'
s.isidentifier()

是一样的。在Python中,通常讨论的不是“变量”(因为Python其实没有变量这个概念),而是关于对象。在这个例子中,就是字符串。

5

Python 里没有“变量”的概念。更好理解的是把它看作是 对象

当你调用 'blah'.isidentifier() 时,'blah' 这个字符串肯定是存在的(毕竟这意味着“调用字符串对象 'blah'isidentifier() 方法”)。

所以如果你的理解是对的,字符串对象的 isidentifier() 方法应该总是返回 True,因为在调用时,这个对象肯定是存在的。

其实 isidentifier() 的作用是检查这个字符串对象是否可以作为一个有效的标识符。比如你可以在 Python 中试试这两行代码:

>>> a = "$"
>>> "$".isidentifier()

即使 "$" 被赋值给了名字 a,但 isidentifier() 的调用返回 False,因为 $ 在 Python 中不是一个有效的标识符。

12

如果s不为空并且是一个有效的标识符,就返回True。

他们的意思是,s可能是一个有效的标识符。这并不意味着它是一个正在使用的标识符。

你第一个例子展示的也是这个意思:'test'(isidentifier实际上检查的内容)并不是一个变量的名字。我想你想表达的是

>>> 's'.isidentifier()
True

撰写回答