Python通用编程规范-04 编码

文章目录4.1 `None`值比较4.2 模块导入控制 __all__4.3 字典取值的推荐方式(`get`)4.4 列表切边不推荐负步长值4.5 参数的类型检查推荐`isinstance`4.6 使用列表推导式替换循环4.7 功能代码应该封装在函数或类中4.8 精确数值计算的场景使用`Decimal`模块4.9 避免对不同对象使用同一个变量名4.10 类方法的装饰4.11 使用包(`package`)形式管理不同目录下的源码4.12 避免在代码中修改`sys.path`列表4.13 使用枚举替代`rang
摘要由CSDN通过智能技术生成

4.1 None值比较

None作比较要使用isis not,不要使用等号

说明:
is判断是否指向同一个对象(判断两个对象的id是否相等),==会调用eq方法判断是否等价(判断两个对象的值是否相等)。

示例:同一个实例,使用“is”和“==”的判断结果不同。

>>> class Bad(object):
        def __eq__(self, other):
            return True
>>> bad_inst = Bad()
>>> bad_inst == None
True
>>> bad_inst is None
False

4.2 模块导入控制 all

定义一个all不会把本模块的所有内容都暴露在外部,将允许外部访问的变量、函数和类的名字放进去

说明:
在模块中定义了__all__之后,从外部from module import *只会import __all__中定义的内容。

示例:

# sample_package.py
__all__ = ["sample_external_function"]


def sample_external_function():
    print("This is an external function..")
    

def sample_internal_function():
    print("This is an internal function..")


# main.py
from sample_package import *

if __name__ == "__main__":
    sample_external_function()
    sample_internal_function().

NameError: name 'sample_internal_function' is not defined

4.3 字典取值的推荐方式(get)

避免直接使用dict[key]的方式从字典中获取value,如果一定要使用,需要注意当key not in dict时的异常捕获和处理

说明:
Python的字典dict可以使用key获取其对应的value。但是当keydictkey值列表中不存在时,直接使用dict[key]获取value会报KeyError,应当使用更为安全的dict.get(key)类型方法获取value。

# 错误示例:
sample_dict = {
   'default_key': 1}
sample_key = 'sample_key'
sample_value = sample_dict[sample_key]

# 正确示例:
sample_dict = {
   'default_key': 1}
sample_key = 'sample_key'
sample_value = sample_dict.get(sample_key)

4.4 列表切边不推荐负步长值

对序列使用切片操作时,不建议使用负步进值进行切片

说明:
Python提供了sample_list[start : end : stride]形式的写法,以实现步进切割,也就是从每stride个元素中取一个出来。但如果stride值为负,则会使代码难以理解,特定使用场景下还会造成错误。

# 错误示例:
# 如下写法,在start : end : stride都使用的情况下使用负的stride,会造成阅读困难。此种情况建议将“步进”切割过程和“范围”切割过程分开,使代码更清晰。
>>> a = [1,2,3,4,5,6,7,8]
>>> a[2::2]
[3,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值