python知识

双下方法

dict[key] == dict.getitem(key)
dict[key]是dict.getiyem()的简写

函数编写原则

  1. 函数设计要尽量短小,一个函数只干一件事,嵌套不易过深,最好控制在3层以内
  2. 函数申明应该做到合理、简单、易于使用。参数个数不宜太多。
  3. 函数参数设计应该考虑向下兼容,最好是参数都设有默认值。
  4. 不要在函数中定义可变对象作为默认值
  5. 使用异常代替返回错误

将常量集中到一个文件中

  1. 常量名称所有字母大写,用下划线链接各个单词
  2. 通过自定义的类实现常量功能。这要求符合“命名全部为大写”和“值一旦绑定便不可再修改”这两个条件
  3. 无论采用哪一种方式来实现常量,都提倡将常量集中到一个文件中,因为这样有利于维护,一旦需要修改常量的值,可以集中统一而不是逐个文件去检查。采用第二种方式实现的常量可以这么做:将存放常量的文件命名为constant.py ,并在其中定义一系列的常量。

判断语句性能

对于or语句,尽量将可能性高的判断放在前面,可能性越低,放在越后面

==和is的区别

is: 会比较两个对象在内存中是否拥有同一块的内存空间,并不适用与判断两个字符串是否相等,
==: 这个才是用来检验两个对象是否相等的,调用的内部eq()方法

获取列表的下标和值

enumerate(),将一个可遍历的对象(列表,元组, 字符串等)组合成一个索引序列,不适用于dict

字符串驻留机制

对于较小的字符串,为了提高系统性能会保留其值的一个副本,当创建新的字符串的时候直接指向该副本即可。就是说值相同的字符串,指向的内存地址是一样的,内存地址公用。所以这就是字符串为不可变对象的原因

不可变对象

该对象所指向的内存地址中的值是不可以更改的。当需要更改的时候,会指向一块新的内存地址

可变对象

该对象指向的内存地址是可以修改的,原地爆炸的那种

异常处理的几点基本原则

  1. try中不要存放太多的代码
  2. 谨慎使用except处理所有的异常,不推荐使用except Exception捕获异常,最好使用raise将异常向上层传递

None

Python中一下数据会当做空来处理:
1. 常量None
2. 常量False
3. 任何形式的数值类型的零: 0,0L, 0.0, 0j
4. 空的序列, (), []
5. 空的字典, {}
6. 当用户定义的类中定义了 nonzero() 和 len() 方法,并且该方法返回整数 0 或者布尔值 False 的时候。

拼接字符串

优先使用join, 而不是+

默认参数最好不为可变对象

当默认参数为可变对象的时候,对可变对象的更改会直接影响原对象,最好用None来作为默认参数