鱼C论坛

 找回密码
 立即注册
查看: 3901|回复: 4

[已解决]python里面str为什么是关键字?有什么用呢?

[复制链接]
发表于 2017-10-31 18:24:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
RT
最佳答案
2017-10-31 20:57:47

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) 就正常可用了。
为了避免这种问题,所以我们不要用内置函数名作为变量名。

20171031205523.jpg



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-31 18:27:54 From FishC Mobile | 显示全部楼层
字符串,可以将一个对象转换为字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 18:28:05 | 显示全部楼层
臂如 我用str = ['123456789']  和 xjy = ['123456789']  有什么区别呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-31 20:57:47 | 显示全部楼层    本楼为最佳答案   

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) 就正常可用了。
为了避免这种问题,所以我们不要用内置函数名作为变量名。

20171031205523.jpg



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-11-1 09:30:09 | 显示全部楼层
Amazon 发表于 2017-10-31 20:57
Python3 里面,str 并不是“关键字”(keyword,也有翻译为“保留字”的)。

>

对! 就是这个!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 14:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表