《编写高质量代码 改善python程序的91个建议》读书笔记 之一

一周多时间的投标,谈判,订货,供货,顺利完成,终于又可以坐下来看书学习了。

1、代码风格

  • 形成自己的代码风格:
    • 变量的命名:小写 + 下划线
    • 类的命名:大写开头 + 下划线
    • 善于利用变量拆包进行复制,例如:a, b = b, a
    • 对可迭代对象的遍历 for … in …
    • 对文件的访问 with … open( )
    • 形成自己风格的format格式:
      • %s
      • s.format是python最为推荐的字符串格式化方法,对比占位符’%s’与format的可读性:
      print ('Hello %s!' %('Tom', ))
      print ('Hello %(name)s!' %{'name': 'Tom'})
      value = {'greet': 'Hello world', 'language': 'Python'}
      print ('%(greet)s from %(language)s' % value)
      print ('{greet} from {language}'.format( greet = 'Hello world', language = 'Python'))
      

3、理解python与C的不同

  • ’ 与 " 在定义字符串时没有任何区别
  • 三元操作符:c ? x : y 在python中等同于 x if c else y

4、在代码中添加注释

  • 无论是否简单,都要给外部可访问的函数和方法添加注释;
  • 注释要清楚地描述方法的功能,并对参数及返回值以及可能发生的异常进行说明

5、添加适当的空行使得代码布局更优雅合理

6、函数编写4原则

  • 函数设计尽量短小,嵌套不宜过深;
  • 函数声明应合理简单易于使用,包括:
    • 函数名赢正确反应其大体功能;
    • 参数个数不宜过多
  • 参数设计应该考虑向下兼容;
  • 一个函数只做一件事。

7、常量的处理

  • python没有传统意义上的常量;
  • 可以定义常量,命名规则最好采用全部大写 + 下划线;
  • 可以自定义常量类;
  • 常量都集中到一个文件中

12、不推荐使用type进行类型检查

不刻意进行类型检查,而是在出错的情况下通过抛除异常进行处理,确实需要进行类型检查时,不建议使用type进行类型检查,因为type对自定义的类型活着定制化的数据类型是不支持的,建议使用工厂函数,或是用:

isinstance(object, classinfo)
# classinfo 可以为直接或间接类名,基本类型名活着由它们组成的元组

13、尽量转换为浮点数后再做除法

虽然python3中已经解决了这个问题,但考虑的兼容性,还是尽量转换为浮点数再做除法。

>>> a = 1.2
>>> a = 1
>>> b = 2
>>> a/b
0.5
>>> a = 1
>>> b = 2
>>> a/b
0
>>> a = 1.0
>>> b = 2
>>> a/b
0.5
>>> a = 1
>>> b = 2.0
>>> a/b
0.5

14、 警惕eval()的安全漏洞

没具体应用过,理解不深,初步的理解是:eval函数可以执行一个字符串变量定义的“命令”,如果被恶意利用,可以执行一些非法操作

eval (source[, globals[, locals]]]]) -> value
# Evaluate the source in the context of globals and locals, source可以是'表示python表达式的字符串'或者 a code object as returned by compile(), the globals must be a dictionary and locals can be any mapping. defalut to the current globlas and locals. if only global is given, locals default to it.

16、分清 == 与 is 的适用场景

is:object identity,is的作用是检查对象的标识符(ID)是否一致,也就是比较两个对象在内存中是否拥有同一块空间,并不适合判断内容是否相等。

= :equal,在哪边调用__eq__()方法,a == b相当于 a.eq(b)

猜你喜欢

转载自blog.csdn.net/steventian72/article/details/86498868