Python复习笔记02
语句表达式:
在python中支持遍历循环的对象:可迭代器对象,支持迭代协议的对象
比如列表list没有迭代功能只是可迭代对象
迭代:迭代协议 --> 例:f.__next__() 属于f的迭代方法,全局的迭代方法为next(f)
迭代工具 --> for,…推导… map…
迭代器对象 已经实现
可迭代对象 iter() --> __iter__()用于生成迭代器
iter(f) is f 判断f是否有迭代功能
内置可迭代对象 --> range() map(函数,可迭代对象) zip() …
注意:list在数据量小的时候操作简单方便,在数据量大的时候占用过大内存,不如支持迭代协议的对象,用到某个值就取出某个值,对内存的消耗小。
函数:
why:最大化代码重用、最小化代码冗余、过程分解
定义: def 函数名(参数1,…):函数体
调用:函数名(实际参数)
变量作用域:built-in、global(global)、enclousure(nonlocal)、local
参数:传递1. 不可变类型,传递副本给函数,函数内操作不影响原始值
2. 可变类型,传递地址引用,函数内操作可能会影响原始值
传副本可以不改变原始值
匹配 位置匹配、关键字匹配、默认值(调用时省略传值)、*args任意数量参数(接收元组)、**kwargs(接收字典表)
lambda表达式:定义匿名函数,基本格式 lambda 参数1,… :函数
高级工具:map(函数,可迭代对象)、filter(函数,可迭代对象)
!!!注意委托模式的使用!!! 代码实例:
def hello_chinese(name): print('您好:', name) def hello_english(name): print('hello', name) def hello_japanese(name): print('こんにちは', name) hello = hello_english # hello = lambda name:print('你好', name) hello('tom') #这个步骤就委托 hello_english 函数
def hello(action, name):
action(name)
hello(hello_japanese, 'tom') #这个步骤就委托 hello_japanese 函数
#hello(lambda name: print('nllpko', name), 'tom')
包与模块管理
模块
指令:import from importlib.reload(模块)
包
why:代码重用 命名空间 实现数据或服务共享
步骤:1找到模块文件 2编译为字节代码 3运行模块文件
如果想使用模块的最新改变的结果可使用
import importlib
importlib.reload(模块) (注意在调用模块时直接(import 模块名)不能使用(from…import…)形式)
搜索范围:1程序主目录 2环境变量 3标准库 4扩展库
面向对象编程
步骤:ooa面向对象分析 ood面向对象设计 oop面向对象编程
实现:1分析对象的特征行为 2写类描述对象模版 3实例化,模拟过程
特征:封装 继承 多态
def __repr__(self): return… 或 def __str__(self): return…
print(对象) 可以得到想要打印与对象相关的内容
实例代码
class book: count = 0 def __init__(self, title, price=0.0, author=none): self.title = title self.price = price self.author = author book.count += 1 def __del__(self): book.count -= 1 def __repr__(self): return '<图书: {}>'.format(self.title) def __str__(self): return '[图书:{}, 价格:{}]'.format(self.title, self.price) def print_info(self): print(self.title, self.price, self.author) if __name__ == '__main__': book1 = book('python经典', price = 29.0, author = 'tom') book2 = book('flask') book3 = book('asp.net') del(book3) print(book1) # 运行后会看到[图书:python经典, 价格:29.0] # print('图书数量:{}'.format(book.count))