Python教程(五),(六)和(七)
Python基础教程(五),(六)和(七):语句,抽象和更加抽象
语句
-
模块导入:
import somemodule #导入模块 from somemodule import somefunction from modele1 import open as op #导入模块open为op
-
==判断两个对象是否相等,is判断两者是否等同(同一个对象)
-
断言assert:确保程序中的某个条件一定为真才让程序正常工作
assert 0<age<100 assert 0<age<100, 'The age is realistic'
-
zip函数:将两个序列压缩在一起,进行并行迭代,返回一个元组的列表
zip(names, ages) #返回[('age', 12), ('both', 45)]
-
eval:执行一系列Python语句,而exal会计算Python表达式(以字符串形式书写),且返回结果值
-
本章新函数
- chr(n) 当传入序列号为n时,返回n所代表的包含一个字符的字符串
- eval(source[, globals[, locals]]) 以字符串作为表达式计算,并且返回值
- enumerate(seq) 产生 用于迭代的(索引,值)对
- ord(c) 返回单字符字符串的int值
- rang([start, ] stop[, step]) 创建整数的列表
- reversed(seq) 产生seq中值排序后的列表
- sorted(sed[, cmp][, key][, reverse]) 返回seq中值排序后的列表
- xrange([start, ] stop[, step]) 创建xrange对象用于迭代
- zip(seq1, seq2, …) 创造用于并行迭代的新序列
抽象
-
位置参数和关键字参数:避免混合使用位置参数和关键字参数
-
收集参数:参数前的星号表示将所有值放置在同一个元组中,*表示收集为元组( ),**表示收集为字典{ }
store(name1, name2, name3)' def store(*name) #用name列表收集输入参数
-
参数收集的逆过程:星号只在定义函数或者调用时才使用,形式相同
params=(1,2) add(*params)
-
本章新函数:
- map(func, seq [, seq, …]) 对序列中的每个元素应用函数
- filter(func, seq) 返回其函数为真的元素的列表
- sum(seq) 返回seq中所有元素之和
- apply(func[, args[, kwargs]]) 调用函数,可以提供参数
更加抽象
-
多态:根据对象(或类)类型的不同而表现出不同的行为
-
isinstance进行类型/类检测,其一般并不是什么好办法,能不用则不用;能毁掉多多态的就是使用函数显示地检查类型,比如type, isinstance以及issubclass函数等
-
封装:不用关心对象是如何构建的,而是直接进行使用
-
在新版本Python3.0中,没有继续使用旧式类的必要;使用新式类,需要在模块或脚本开始处, 添加
_metaclass=type
-
类定义中,self参数是对于对象自身的引用,没有其作用,成员方法就没法访问它们要对其特性进行操作的对象本身了;self参数是方法很函数的区别
-
在方法或者特性之前加上双下划线,表示其为私有的;在类的内部定义中,所有以双下划线开始的名字都被翻译为,前面加上单下划线和类名的形式
s.__inaccessible() #真正形式为s._Secretive_inaccessible
-
指定超类:
class Filter() class SPAMFilter(Filter) #SPAMFilter是Filter的子类
-
检查继承:
issubclass(SPAMFilter, Filter) #返回True SPAMFilter._bases_ #返回基类Filter s=SPAMFilter() #实例化SPAMFilter类 isinstance(s, Filter) #返回True
-
多个超类:即多重继承;在继承顺序中,先继承的方法会重写后继承的类中的方法,其后继承类的同名方法失效
-
本章新函数:
- callable(object) 确定对象是否可调用(比如函数或者方法)、
- getattr(object, name[, default]) 确定特性的值,可选择提供默认值
- hasattr(object, name) 确定对象是否具有给定的特性
- isinstance(object, class) 确定对象是否是类的实例
- issubclass(A, B) 确定A是否为B的子类
- random.choice(sequence) 从非空序列中随机选择元素
- setattr(object, name, value) 设定对象的给定特性为value
- type(object) 返回对象的类型