Python
生成器
1.列表推导式
[x for x in range(5)] --->obj=(x for x in range(5))
next(obj)
2.函数+yield
def 函数名():
....
yield value ----> 类似:return value
....
调用函数:
obj=aa()
3. 函数:
next(obj)
obj.__next__()
obj.send(None) | obj.send(8)
补充:
如果是生成器,则也可以使用for..in
生成器:
协成
案例: 多任务
迭代器
可迭代对象
集合对象
list tuple dict str set..
生成器对象
可迭代对象: Iterable
使用isinstance判断是否是可迭代的,注意:from collections import Iterable
迭代器
迭代器: Iterator
next(object) --->获取下一个值 ---->object就是迭代器
可迭代对象不一定就是一个迭代器
不是一个迭代器 ,如何变成迭代器?
iter() 前提:可迭代对象
总结
凡是可作用于 for 循环的对象都是 Iterable 类型;
凡是可作用于 next() 函数的对象都是 Iterator 类型;
集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象
编码规范
1. 函数的参数
foo = long_function_name(var_one, var_two,
var_three, var_four)
2. if,while的条件:
if (this_is_one_thing
and that_is_another_thing):
3.右括号回退 推荐方案
my_list = [
1, 2, 3,
4, 5, 6,
]
4.Python 3中不允许混合使用Tab和空格缩进
5. 空行
6. 编码:
7. 导入模块在单独行
8. 禁止使用通配符导入
9. 括号里边避免空格
# No
spam( ham[ 1 ], { eggs: 2 } )
# yes
spam( ham[1], { eggs: 2 } )
10. 空格:
a = b
a += 1
11. 函数调用的左括号之前不能有空格
12.二元运算符两边放置一个空格
涉及 =、符合操作符 ( += , -=等)、比较( == , < , > , != , <> , <= , >= , in , not in , is , is not )、布尔( and , or , not )。
优先级高的运算符或操作符的前后不建议有空格
13.关键字参数和默认值参数的前后不要加空格
14.通常不推荐复合语句(Compound statements: 多条语句写在同一行)
15.尽管有时可以在if/for/while 的同一行跟一小段代码,但绝不要跟多个子句,并尽量避免换行
16.避免采用的名字
000 = 123
OOO000 = 123
OOO = l1
文本长块,比如文档字符串或注释,行长度应限制为72个字符文本长块
生成器
1.列表推导式
[x for x in range(5)] --->obj=(x for x in range(5))
next(obj)
2.函数+yield
def 函数名():
....
yield value ----> 类似:return value
....
调用函数:
obj=aa()
3. 函数:
next(obj)
obj.__next__()
obj.send(None) | obj.send(8)
补充:
如果是生成器,则也可以使用for..in
生成器:
协成
案例: 多任务
迭代器
可迭代对象
集合对象
list tuple dict str set..
生成器对象
可迭代对象: Iterable
使用isinstance判断是否是可迭代的,注意:from collections import Iterable
迭代器
迭代器: Iterator
next(object) --->获取下一个值 ---->object就是迭代器
可迭代对象不一定就是一个迭代器
不是一个迭代器 ,如何变成迭代器?
iter() 前提:可迭代对象
总结
凡是可作用于 for 循环的对象都是 Iterable 类型;
凡是可作用于 next() 函数的对象都是 Iterator 类型;
集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得一个 Iterator 对象
编码规范
1. 函数的参数
foo = long_function_name(var_one, var_two,
var_three, var_four)
2. if,while的条件:
if (this_is_one_thing
and that_is_another_thing):
3.右括号回退 推荐方案
my_list = [
1, 2, 3,
4, 5, 6,
]
4.Python 3中不允许混合使用Tab和空格缩进
5. 空行
6. 编码:
7. 导入模块在单独行
8. 禁止使用通配符导入
9. 括号里边避免空格
# No
spam( ham[ 1 ], { eggs: 2 } )
# yes
spam( ham[1], { eggs: 2 } )
10. 空格:
a = b
a += 1
11. 函数调用的左括号之前不能有空格
12.二元运算符两边放置一个空格
涉及 =、符合操作符 ( += , -=等)、比较( == , < , > , != , <> , <= , >= , in , not in , is , is not )、布尔( and , or , not )。
优先级高的运算符或操作符的前后不建议有空格
13.关键字参数和默认值参数的前后不要加空格
14.通常不推荐复合语句(Compound statements: 多条语句写在同一行)
15.尽管有时可以在if/for/while 的同一行跟一小段代码,但绝不要跟多个子句,并尽量避免换行
16.避免采用的名字
000 = 123
OOO000 = 123
OOO = l1
文本长块,比如文档字符串或注释,行长度应限制为72个字符文本长块