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知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongfuguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值