《python 开发技术详解》 学习笔记

2014-10-28
.py,.pyw 源代码
由 python.exe,pythonw.exe 解释,可用文本编辑器打开编辑

.pyc 字节代码
python源文件编译多过后的字节文件,.pyc文件与平台无关可在多平台运行,.py直接运行或通过脚本生成.pyc
import py_compile
py_compile.compile('XXXX.py')

.pyo 优化代码
需要命令行工具生成
python - O - m py_compile XXXX.py

python 命名规则
全局变量_xxxxxx
类的私有变量和私有方法__xxxxx
类名Xxxxxxx
公有方法xxxXxxxXxxx
对象xxxxxxx

import random
randrange(start,stop[,step])            //start~stop-1

中文注释
如需在代码中使用中文注释,在最前面加上注释
# -* - coding: UTF -8 -* -

跨平台注释
在windows以外的平台上运行时加上注释
#! /user/bin/python

main 程序的入口
if __name__ == '__main__':
################################################################################

2014-10-29
pow(i, power) //return i**power
################################################################################

2014-10-30
全局变量
全局变量的定义在文件开头 _x ,在函数中引用 global _x
在函数中定义重名的变量 _x 是作用域为函数内的临时变量

python中没有常量,默认首字母大写Xxxx对的变量时常量,使用时不人为改变其值
在python中完成常量的定义:
class _const:
    class ConstError(TypeError):pass  //创建一个 类型异常 类型
    def __setattr__(self,name,value):   //内置函数 __setattr__ 在定义变量时被调用,使用__setattr__来控制重新绑定,给对象添加或者修改指定的属性。setattr()方法接受3个参数:setattr(对象,属性,属性的值)
        if self.__dict__.has_key(name):  //__dict__ 可以访问名字空间里的属性
            raise self.ConstError,'Can't rebind const (%s)'% name  //如果对象的键已经在字典中,引起异常
        self.__dict__[name]=value  //否则实现定义
    def __delattr__(self, name):
        if name in self.__dict__:
            raise self.ConstError, "Can't unbind const(%s)" % name
        raise NameError, name
import sys  
sys.modules[__name__] =_const()  //把const类注册到sys.modules这个全局字典中。  __name__的值为对应模块const的名字'const'  
if __name__ == '__main__':
    const = new _const()
    const.a = 23
    const.a = 22
对该类的调用
import const
const.a = 23 //声明常量a  //== sys.modules['const'].a  ==  _const().a  生成了_const()类的对象    
const.a = 33
run~~~~~ >>> const.ConstError: can't rebind const(magic)

python中的eobject基类:
python 2.2~3.0 之间的版本有 新式类(new-style class)、旧式类(classic class)的区别
新式类继承于object类,而旧式类不继承
python 3.0 之后默认所有类继承于object即:所有类是new-style class
new-style class 提供了一些特殊方法:
1.__new__:
    __init__控制类的实例的初始化,而__new__控制初始化之前的行为—也就是实例的生成。
    __new__的第一个参数是类(cls),而不是self。
    return cls 参数类的实例,object.__new__ 提供了生成实例的方法
2.__getattribute__:
    任何obj.a,都会被直接转化为obj.__getattribute__(a) //a被__getattribute__调用
3.重载了__get__,__set__,__delete__:
    ...略



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值