8个超好用内置函数set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 成都创新互联是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都做网站、网站设计、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率。
这次来梳理下8个好用的python内置函数
1、set()
当需要对一个列表进行去重操作的时候,set()函数就派上用场了。
用于创建一个集合,集合里的元素是无序且不重复的。集合对象创建后,还能使用并集、交集、差集功能。
2、eval()之前有人问如何用python写一个四则运算器,输入字符串公式,直接产生结果。用eval()来做就很简单:eval(str_expression)作用是将字符串转换成表达式,并且执行。
3、sorted()在处理数据过程中,我们经常会用到排序操作,比如将列表、字典、元组里面的元素正/倒排序。这时候就需要用到sorted() ,它可以对任何可迭代对象进行排序,并返回列表。对列表升序操作:
对元组倒序操作:
使用参数:key,根据自定义规则,按字符串长度来排序:
根据自定义规则,对元组构成的列表进行排序:
4、reversed()如果需要对序列的元素进行反转操作,reversed()函数能帮到你。reversed()接受一个序列,将序列里的元素反转,并最终返回迭代器。
5、map()做文本处理的时候,假如要对序列里的每个单词进行大写转化操作。这个时候就可以使用map()函数。
map()会根据提供的函数,对指定的序列做映射,最终返回迭代器。也就是说map()函数会把序列里的每一个元素用指定的方法加工一遍,最终返回给你加工好的序列。举个例子,对列表里的每个数字作平方处理:
6、reduce()前面说到对列表里的每个数字作平方处理,用map()函数。那我想将列表里的每个元素相乘,该怎么做呢?这时候用到reduce()函数。
reduce()会对参数序列中元素进行累积。第一、第二个元素先进行函数操作,生成的结果再和第三个元素进行函数操作,以此类推,最终生成所有元素累积运算的结果。再举个例子,将字母连接成字符串。
你可能已经注意到,reduce()函数在python3里已经不再是内置函数,而是迁移到了functools模块中。这里把reduce()函数拎出来讲,是因为它太重要了。
7、filter()一些数字组成的列表,要把其中偶数去掉,该怎么做呢?
filter()函数轻松完成了任务,它用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。filter()函数和map()、reduce()函数类似,都是将序列里的每个元素映射到函数,最终返回结果。我们再试试,如何从许多单词里挑出包含字母w的单词。
8、enumerate()这样一个场景,同时打印出序列里每一个元素和它对应的顺序号,我们用enumerate()函数做做看。
enumerate翻译过来是枚举、列举的意思,所以说enumerate()函数用于对序列里的元素进行顺序标注,返回(元素、索引)组成的迭代器。再举个例子说明,对字符串进行标注,返回每个字母和其索引。
通过关键字def来创建函数,def的作用是实现python中函数的创建
函数定义过程:
函数名+()小括号执行函数
函数体内对全局变量只能读取,不能修改
局部变量,无法在函数体外使用
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
1.1 模块和包概念
Python程序由模块组成。一个模块对应 python源文件,一般后缀名是:.py。
模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。
语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
1.2 标准库模块(standard library)
与函数类似,模块也分为标准库模块和用户自定义模块。 Python标准库提供了操作系统功能、网络通信、文本处理、文件处理、数学运算等基 本的功能。比如: random(随机数)、math(数学运算)、 time(时间处理)、 file(文件处理)、 os(和操作系统交互)、sys(和解释器交互)等。
另外,Python还提供了海量的第三方模块,使用方式和标准库类似。功能覆盖了能想象到的所有领域,比如:科学计算、WEB开发、大数据、人工智能、图形系统等。
1.3 为什么需要模块化编程
模块(module)对应于Python源代码文件(.py文件)。模块中可以定义变量、函数、 类、普通语句。 这样,我们可以将一个 Python程序分解成多个模块,便于后期的重 复应用。
模块化编程(Modular Programming)将一个任务分解成多个模块。每个模块就像一个积木一样,便于后期的反复使用、反复搭建。
模块化编程有如下几个重要优势:
便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序
实现代码复用。一个模块实现后,可以被反复调用。
可维护性增强。
1.4 模块化编程的流程
模块化编程的一般流程:
设计API,进行功能描述。
编码实现API中描述的功能。
在模块中编写测试代码,并消除全局代码。
使用私有函数实现不被外部客户端调用的模块函数。
1.5 模块的API和功能描述要点
API(Application Programming Interface 应用程序编程接口)是用于描述模 块中提供的函数和类的功能描述和使用方式描述。
模块化编程中,首先设计的就是模块的API(即要实现的功能描述),然后开始编 码实现API中描述的功能。最后,在其他模块中导入本模块进行调用。
通过help(模块名)查看模块的API。 一般使用时先导入模块 然后通过help函数查看。
你理解错了,*args说明可以传递可变个位置参数。而**keyargs才是可以传递可变个关键字参数的语法。而最后的那个sep="/"是默认参数,如果不传递就会使用默认值。
还有一种情况就是,使从某个位置以后的所有参数都为关键字参数,这可以使用*来实现,如:
##缩进格式看图
def f(a,b,*,c,d):
print(a,b,c,d)
#这样可以
f(1,2,c=3,d=4)
#这样不行,c、d,
#只能用关键字参数来传递
f(1,2,3,4)
限python限制其他软件使用时长:运行一个需要1秒才能完成的函数,超时设置为2秒:No timeout
如果我们运行time.sleep(10)并将超时设置为两秒:finished = call_timeout(2, time.sleep, args=(10, ))
结果:Timeout