Python解析式和生成器表达式,函数作用域,递归

列表解析
返回一个新的列表

[返回值 for element in iterable [if condition]]
[if condition and condition]==[if condition if condition]

[expr for i in iterable1 for j in iterable2]

生成器表达式
(返回值 for element in iterable [if condition])
返回一个生成器对象

和列表解析式的区别
生成器表达式是惰性求值(按需计算,延迟计算),需要的时候才计算值
列表解析是是立即返回值

生成器是可迭代对象是迭代器
可迭代对象可以包装称迭代器 iter()
迭代器是可迭代一次

集合解析式

{返回值 for element in iterable [if condition]}
立即返回一个集合

字典解析式

{返回值 for element in iterable [if condition]}
使用key:value形式
立即返回一个字典

生成器和迭代器是不同的对象,但都是可迭代对象

简单排序总结

isinstace(obj,type)
判断值是否是一个类型

issubclass(cls,type) 判断一个类型是否是另一个子类
issubclass(bool,int)

chr(i)给一个一定范围的正整数 返回对应字符 65535]
ord(id)返回字符对应的正整数

enumerate(iterable,[start])
返回的元祖中 前面索引 从start开始,默认0

next(迭代器,default)
如果迭代完则返回缺醒值

zip(*iterable)
返回元祖 短板原理

callable(标识符)测试可调用对象

位置参数必须在关键字参数之前传入 ,位置参数是按位置对应的

*args 元祖
**kwargs 字典

* 后为keyword-only参数

参数列表一般顺序
位置参数 *args kwo参数 **kwargs

函数参数解构 只能用在函数传参中
字典 *解出key **解出key=value相当于关键字传参

return==return None

dict view

global nonlocal 闭包

global 变量
声明全局变量 放在前面

闭包:内层用到外层函数局部变量

nonlocal
声明变量作用域限制在外层函数内部 非本地 但不能是全局变量

形参当局部变量看

函数的定义只做一次

name.__defaults 查看位置参数列表 元祖
name.__kwdefaults 查看kwonly参数列表 字典

#if not numDic.get©:也可判断

LEGB 变量名解析原则

Local

Enclosing

Global

Build-in

全局函数销毁:
重新定义同名函数
del语句删除函数对象标识符引用计数减一
程序结束时

局部函数销毁
重新在上级作用域定义同名函数
del语句删除函数名称,函数对象的引用计数减一
上级作用域销毁时

栈和线程相关

[]+= [] 覆盖原来的 extend 非引用类型(内存地址复用)

[]= + [] 生成一个新的 new list

递归:函数直接或者间接调用自身
递归一定要有退出条件
需要有边界条件 前进段 返回段
递归不宜过深
递归 效率低 需要压栈 不能超过栈长
有限次数的递归可使用循坏代替
绝大多数递归都可以使用循环实现

bin hex oct 返回字符串

非关键字的标识符可以覆盖

字符串 unicode

.sort()就地修改
sorted 立即求值 返回新的列表

reversed 返回迭代器

all() 有元素所有都等效True 空容器True
any() 一个为True 即为True 空容器
Flase

普通位置参数,缺醒位置参数,可变位置参数,关键字参数,可变关键字参数

赋值即定义 标识符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值