Python3 里面,str 并不是“关键字”(keyword,也有翻译为“保留字”的)。
>
https://docs.python.org/3/library/functions.html#func-str
>str is the built-in string class.
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
我们可以看到,str 并不是关键字,所以,理论上,str 是可以作为变量名的。
在 IDLE 输入:
str = ['123456789']
是不会报错的,输入:
for = ['123456789']
就会报错“SyntaxError: invalid syntax”,for 是关键字,不可以作为变量名;str 并不是关键字,所以,理论上,str 是可以作为变量名的。
>>> str = ['123456789']
>>> xjy = ['123456789']
>>> str == xjy
True
str 和 xjy 的值是相等的。
但是!!!
str 尽管不是关键字,但它是 Python 内置函数(BIF,built-in function)的函数名。
见:https://docs.python.org/3/library/functions.html
如果把 str 用作变量名的话,紧接着想用 str() 函数的话,就会出错。如图:
把 str = ['123456789'] ,str 现在是一个列表(list)变量名,我想用 str(9) 把 9 转为字符串'9',就报错了。
没办法,只好先 del str ,删除 str 这个列表变量,接着,str(9) 就正常可用了。
为了避免这种问题,所以我们不要用内置函数名作为变量名。