只是导入就直接执行 mymain 函数,这不符合我们预期 。
如果有主句,导入后符合预期:
In [6]: import MyModuleIn [7]: MyModule.mymain()Doing something in module MyModule
95 字典默认值
In[1]: d = {'a': 1, 'b': 3}In[2]: d.get('b', []) # 存在键 'b'Out[2]: 3In[3]: d.get('c', []) # 不存在键 'c',返回[]Out[3]: []
96 lambda 函数
lambda 函数使用方便,主要由入参和返回值组成,被广泛使用在 max, map, reduce, filter 等函数的 key 参数中 。
如下,求 x 中绝对值最大的元素,key 函数确定abs(x)作为比较大小的方法:
x = [1, 3, -5]y = max(x, key=lambda x: abs(x))print(y) # -5
97 max
求 x 中绝对值最大的元素,key 函数确定abs(x)作为比较大小的方法:
x = [1, 3, -5]y = max(x, key=lambda x: abs(x))print(y) # -5
98 map
map 函数映射 fun 到容器中每个元素,并返回迭代器 x
x = map(str, [1, 3, 5])for e in x:print(e, type(e))
下面写法不够 Pythoner
for e in [1, 3, 5]:print(e, str(e)) # '1','3','5'
99 reduce
reduce 是在 functools 中,第一个参数是函数,其必须含有 2 个参数,最后归约为一个标量 。
from functools import reducex = [1, 3, 5]y = reduce(lambda p1, p2: p1*p2, x)print(y) # 15
下面写法不够 Pythoner:
y = 1for e in x:y *= eprint(y)
100 filter
使用 filter 找到满足 key 函数指定条件的元素,并返回迭代器
如下,使用 filter 找到所有奇数:
x = [1, 2, 3, 5]odd = filter(lambda e: e % 2, x)for e in odd: # 找到奇数print(e)
还有另外一种方法,使用列表生成式,直接得到一个odd 容器,
odd = [e for e in x if e % 2]print(odd) # [1,3,5]
下面写法最不符合 Python 习惯:
odd = []for e in x:if e % 2:odd.append(e)print(odd) # [1,3,5]
推荐阅读
- 用Python从头开始实现简单遗传算法
- Pyqtgraph是Python平台上一种功能强大的2D/3D绘图库
- 这个小众网站,竟包含有100种实用工具,还能手把手教你修电脑
- Python的10个神奇的技巧
- 程序员用Python实现自动化控制键盘和鼠标
- 退休|49岁投了1000份简历没有找到工作,怎样才能工作到65岁?
- Python语法之Django框架-安装
- 一篇文章搞定Python连接mysql数据库模块PyMySQL
- 一篇文章搞懂Python协程
- 十几行Python代码轻松实现txt转xls,方便快捷