• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

竹千代

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

编程细节

1、函数参数的默认值尽量不要是可变对象

python中,一切皆对象。函数也不例外。默认值在函数的func_defaults属性中,如果是默认值可变对象,某次被修改,默认值就会被改变。

 

2、类属性不同于对象属性 

  • 对象可以访问/修改类属性,而类不可以访问修改对象属性
  • 类属性对所有对象而言是唯一共同的,对象属性则是各自的

 

3、对象属性查找方法

先在本对象属性中查找,再去类属性中找,最后去父类属性中查找

 

4、变量查找方法

先在局部空间(locals) 中找,再去嵌套外层函数中找,再去全局空间中找(globals),最后去系统空间中(sys.modules)找

所以,对于循环遍历的执行体中,最好用局部变量记住其他空间中的变量,缩短查找时间

 

5、sort与sorted

Sorted(iterable, cmp, key, reverse)
s.sort(cmp, key, reverse)
  • Sorted适用于任何迭代对象(包括dict),sort仅适用于列表
  • Sorted排序后原有对象保持不变;sort排序后会修改原有对象
  • 无论哪者,使用key的效率都要比cmp高。这里,key函数是接受迭代里面任何一个元素做参数,进行函数运算之后按照该结果进行排序;而cmp函数式接受两个元素做参数,进行运算,看结果与0的大小关系。在进行比较中,key函数针对每个元素只会调用一次,而cmp要执行多次

6、Mixin模式

Python语言是动态,所谓mixin模式就是动态修改类之间关系。比如通过__bases__修改继承关系等等,从而间接修改此类的功能(继承了新函数)。

 

7、线程同步

http://yoyzhou.github.io/blog/2013/02/28/python-threads-synchronization-locks/

 

posted on 2015-04-27 20:10  竹千代  阅读(166)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3