那么在这个过程中我们需要定义一个函数foo,然后再传到filter中作为一个参数,但是可能这个函数在全局中只需要用一次,那么把它作为一个全局变量就会有点得不偿失,那么我们应该怎么做呢?
一些常见应用场景
from functools import reduce
a = [ 0 , 1 , 2 , 3 , 4 , 5 ]
filter_result = list ( filter ( lambda x: x % 2 == 0 , a)) 把满足lambda函数的数都从列表中过滤出来
map_result = list ( map ( lambda x: x ** x, a)) 把lambda函数施加到后面list的每一个元素上面
reduce_result = reduce( lambda a, b: a + b, a, 0 ) 用于缩减序列,缩减的方式是通过lambda函数提供的功能,比如这里是求和,0是他们和的最初值。
print ( 'filter_result: %s, map_result: %s, reduce_result: %s' % (filter_result, map_result,
reduce_result))
# filter_result: [0, 2, 4], map_result: [1, 1, 4, 27, 256, 3125], reduce_result: 15
reduce(function, sequence[, initial]) -> value,function=lambda a, b: a + b, sequnce=a,intial=0
sequence连续使用function, 如果不给出initial, 则第一次调用传递sequence的两个元素, 以后把前一次调用的结果和sequence的下一个元素传递给function. 如果给出initial, 则第一次传递initial和sequence的第一个元素给function。
二、模块
Python 的内置模块
• datetime是Python处理日期和时间的标准库。
• collections是Python内建的一个集合模块,提供了许多有用的集合类。
• Base64是一种用64个字符来表示任意二进制数据的方法。
• hashlib提供了常见的摘要算法,如MD5,SHA1。
• itertools提供了非常有用的用于操作迭代对象的函数。
• urllib提供了一系列用于操作URL的功能
• HTMLParser来非常方便地解析HTML
模块导入实例:
import
import关键字导入一个模块,这里导入的是time模块,time模块的名字调用time方法,我们就将获取当前的时间,这个获取的是起始时间到现在的秒数,起始时间是1970年的一月一号。
import还有第二种调用方法:from.....import.....
from+time模块+import+time函数,就可以直接调用time函数,也可以在导入的时候取一个新名字,就要多加as。
sys.path:
对于内置模块而言,是通过系统的路径来搜索的,首先从当前目录下搜索,然后再从系统环境下去搜索,再从Python的安装环境下去搜索。
模块搜索路径:
当导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录。
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由
安装过程决定的默认目录。
模块导入:
• 在 python 中,当一个 module 作为整体被执行时,moduel.__name__ 的值是 "__main__" ;
• 当一个 module 被其它 module 引用时, module.__name__ 将是module 自己的名字;
• 当然一个 module 被其它 module 引用时,其本身并不需要一个可执行的入口main 了。
Python 的内置模块 - os
Ø os模块,用于提供系统级别的操作
• os.getcwd()
获取当前工作目录,即当前python脚本工作的目录路径
• os.chdir("dirname")
改变当前脚本工作目录;相当于shell下cd
• os.curdir
返回当前目录: ('.')
• os.pardir
获取当前目录的父目录字符串名:('..')
• os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,
依此类推
• os.mkdir('dirname')
生成单级目录;相当于shell中mkdir dirname
• os.rmdir('dirname')
删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir
dirname
• os.remove()
删除一个文件
• os.rename("oldname","newname") 重命名文件/目录
• os.sep
输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
• os.linesep
输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
Python 的内置模块 - sys
Ø sys模块提供了一系列有关Python运行环境的变量和函数
• sys.argv
命令行参数List,第一个元素是程序本身路径
• sys.exit(n)
退出程序,正常退出时exit(0)
• sys.version
获取Python解释程序的版本信息
• sys.maxint
最大的Int值
• sys.path
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
• sys.platform
返回操作系统平台名称
• sys.stdout.write('please:')
• val = sys.stdin.readline()[:-1]
包:
假设您开发了一个包含许多模块的非常大的应用程序。随着模块数量的增长,如果将它们转储
到一个位置,就很难跟踪所有这些模块。如果它们具有相似的名称或功能,则尤其如此。你可
能希望有一种方法来分组和组织它们。
包允许使用点表示法对模块名称空间进行分层结构。与模块帮助避免全局变量名之间的冲突一
样,包也有助于避免模块名之间的冲突。
创建包非常简单,因为它利用了操作系统的分层文件结构。如下:
你只要创建了一个文件夹,你就创建了一个包,在图中pkg包中有两个模块。
注:文章是根据【蓝鲸】2021秋季全新SaaS开发实战课 里的PPT写的。