filter() 过滤 (惰性计算)
filter() 接收一个函数(过滤的标准)和一个序列。filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素。
过滤标准:
def is_odd(n):return n % 2 == 1
a = list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))print(a)
sorted 排序
sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]
带key
先做key函数处理,但是结果还是对应到原来的
sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]
字符串排序
sorted(['bob', 'about', 'Zoo', 'Credit'])['Credit', 'Zoo', 'about', 'bob']
反向排序
传入第三个参数 reverse=True
sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower,reverse=True)['Zoo', 'Credit', 'bob', 'about']
返回 函数
函数作为返回值
def lazy_sum(*args):def sum():ax = 0for n in args:ax = ax + nreturn axreturn sum
f = lazy_sum(1, 3, 5, 7, 9)
调用f()才计算
匿名函数
适用于比较简单的函数关键字 lambda 表示匿名函数,冒号前面的 x 表示函数参数
lambda x: x * x 实际上就是:def f(x):return x * x
偏函数
import functoolsint2 = functools.partial(int, base=2)这样int2就是一个专门的二进制的int函数等效于:def int2(x, base=2):return int(x, base)
当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
模块
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在 Python 中,一个.py 文件就称之为一个模块(Module)。Python 又引入了按目录来组织模块的方法,称为包(Package)。
模块代码规范:
#!/usr/bin/env python3# -*- coding: utf-8 -*-
' 注释字符串 '
__author__ = '作者名字'
代码体
安装第三方模块
除了内建的模块外,Python 还有大量的第三方模块。基本上,所有的第三方模块都会在 https://pypi.python.org/ 上注 册,只要找到对应的模块名字,即可用pip 安装。pip3 install 模块名 (-i 镜像源地址)pip3 install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simpleimport syssys.path
查看模块搜索路径