前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程一定要注意的那些“坑”(五)

Python编程一定要注意的那些“坑”(五)

作者头像
Python小屋屋主
发布2018-04-17 10:36:43
6460
发布2018-04-17 10:36:43
举报
文章被收录于专栏:Python小屋

已发“坑”请参考Python函数默认值参数的2个坑,Python编程中一定要注意的那些“坑”(一),Python编程中一定要注意的那些“坑”(二),Python中一定要注意的那些“坑”(三),Python编程一定要注意的那些“坑”(四).

今天来说说变量、函数、类等标识符以及程序文件命名应该注意的“坑”。

(1)变量、函数、类等标识符命名

这些标识符命名时遵循的原则基本上是一致的:1)必须以字母或下划线开头;2)不能包含空格和标点符号;3)不能使用Python关键字作为标识符的名字;4)英文字母区分大小写;5)不建议使用内置函数的名字、标准库或扩展库的名字、标准库或扩展库中对象的名字来作为标识符名字。

上面的命名规则其他几条还算容易理解,最后一条是必须要注意的,如果不小心很容易中埋伏出现错误,而这样的错误是非常难以发现的。以内置函数为例,Python允许自己在编写代码时使用内置函数名作为变量名,但这会改变内置函数名的含义,从而影响后面对其调用的代码。例如:

>>> id(3) 1599775904 >>> id = 5 >>> id(3) Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> id(3) TypeError: 'int' object is not callable

上面代码中,第一次是调用内置函数id()来查看对象3的内存地址,但后面的代码错误地把id作为自己的变量名,从此以后,id再也不是原来的内置函数id(),而是一个普通的整数5(但这个操作并不影响其他内置函数的使用),所以接下来执行id(3)试图查看对象3的内存地址就会发生错误,因为现在和执行语句5(3)是一样的意思,很明显整数5不是可调用对象,所以抛出异常。

(2)程序文件命名

肯定有人会说,我自己编写的程序,爱起什么文件名就起什么文件名,这事你也管得着?我是管不着的,但是Python能管得着。

Python在启动时会导入很多标准库,而程序运行时会导入很多标准库和扩展库,而导入时对程序文件的查找顺序是优先考虑当前文件夹,如果找不到就会去sys.path变量所指定的路径中去查找。那么问题来了,如果我们把自己的程序文件起的名字和Python标准库或某个扩展库的名字相同会怎么样呢?那就会优先导入这个自己编写的文件(有安全经验的朋友可以查查DLL劫持的有关内容)。如果我们自己编写的文件不符合要求或没有提供所必需的接口,就会影响程序后续代码的运行,甚至会影响Python解释器的工作。例如,我们把自己的程序文件名命名为threading,就会发现IDLE无法启动了。

多说一句:今晚11点火车去济南给山东移动公司的部分技术骨干培训5天Python,6天后凌晨1:27火车赶回烟台早上7:40到达。期间5天每天要讲课近8个小时,还有答疑环节,可能会比较辛苦一些,晚上不一定能有时间和体力整理和发文,对此我表示歉意还望理解,并会争取在条件和精力允许的情况下尽量分享Python知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档