大家好,我是安果!
在 3.8 版本中,Python 解释器有近 69 个内置函数可供使用,有了它们能极大地提高编码效率
数量虽然不少,但在日常搬砖中只用到其中一部分,根据使用频率和用法,这里列出来几个本人认为不错的内置函数,结合一些例子介绍给大家
complex() 返回一个形如 a+bj
的复数,传入参数分为三种情况:
参数为字符串时,将字符串表达式解释为复数形式并返回 参数只有一个整数 a 时,虚部 b 默认为0,函数返回 a+0j
>>> complex('1+2j' ) (1+2j) >>> complex() 0j >>> complex(1,2) (1+2j) >>> complex(2) (2+0j)
dir() >>> class Test: def first(self): return 1 def second(self): return 2 >>> dir(Test)# 提供参数时 ['__class__' , '__delattr__' , '__dict__' , '__dir__' , '__doc__' , '__eq__' , '__format__' , '__ge__' , '__getattribute__' , '__gt__' , '__hash__' , '__init__' , '__init_subclass__' , '__le__' , '__lt__' , '__module__' , '__ne__' , '__new__' , '__reduce__' , '__reduce_ex__' , '__repr__' , '__setattr__' , '__sizeof__' , '__str__' , '__subclasshook__' , '__weakref__' , 'first' , 'second' ] >>> dir()# 未提供参数时 ['Test' , '__annotations__' , '__builtins__' , '__doc__' , '__loader__' , '__name__' , '__package__' , '__spec__' ]
divmod(a,b) 根据 除法运算 计算 a,b 之间的商和余数,函数返回一个元组(p,q)
,p 代表商 a//b
,q 代表余数 a%b
>>> divmod(21,4) (5, 1) >>> divmod(20.1,3) (6.0, 2.1000000000000014)
enumerate(iterable,start=0) iterable -- 一个可迭代对象,列表、元组序列等 该函数返回枚举对象是个迭代器,利用 next() 方法依次返回元素值,每个元素以元组形式存在,包含一个计数元素(起始为 start )和 iterable 中对应的元素值;
>>> stu = ['xiao' ,'zhang' ,'li' ,'qian' ] >>> enumerate(stu) >>> list(enumerate(stu))# 默认start = 0 [(0, 'xiao' ), (1, 'zhang' ), (2, 'li' ), (3, 'qian' )] >>> list(enumerate(stu,start = 1))# 默认start = 1 [(1, 'xiao' ), (2, 'zhang' ), (3, 'li' ), (4, 'qian' )]
eval(expression,globals,locals) globals -- 变量作用,全局命名空间,如果提供必须为字典形式;可选参数 locals -- 变量作用域,局部命名空间,如果提须可为任何可映射对象;可选参数 将字符串表达式解析,返回执行结果
>>> eval ("2+2" ) 4 >>> eval ("2==2" ) True
filter(function,iterable) function -- 提供筛选函数名,返回 true 或 false
函数返回 iterable 中满足 function 为 True 的元素;假设有一个列表,我们只需要其中的一部分元素,这时就可以提前写一个函数再借助 filter 来进行过滤
>>> num_list = list(range(20)) >>> num_list [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] >>> def mod_three(num): if (num%3==0): return True else : return False >>> filter(mod_three,num_list) >>> list(filter(mod_three,num_list)) [0, 3, 6, 9, 12, 15, 18]
isinstance(object,classinfo) object --表示一个类型的对象,若不是此类型, 函数恒返回 False; calssinfo -- 为一个类型元组或单个类型; 判断对象 object 的类型是否为 classinfo 或 classinfo 中其中一个类型,返回 True 或 False;
调试Python程序时,障碍之一就是初始变量没有定义类型,所以在代码编写或者调试时,isinstance() 函数常被用来判断变量类型,帮助我们了解程序整个逻辑防止出错
>>> isinstance(num,str) False >>> isinstance(num,int) True
map(function,iterable,...) 将 iterable 中的每一个元素放入函数 function 中依次执行,得到与 iteable 元素数量相同的迭代器;
map() 中可迭代对象可以为多个,其中函数 function 中的参数为所有可迭代对象中并行元素,最终得到的迭代器的数量是以提供元素数量最少可迭代对象为基准,当数量最少的可迭代对象所有元素输入完毕后即执行停止
>>> def fun_a(a,b): return a+2*b >>> num_list1 = [1,2,3,4] >>> num_list2 = [2,3,4,5] >>> list(map(fun_a,num_list1,num_list2)) [5, 8, 11, 14]
input() 函数用于人机交互,读取从输入端输入的一行内容,转化为字符串
>>> s = input('input:' ) input:小张Pyhon >>> s'小张Pyhon'
zip(*iteables) *iterables -- 两个或两个以上可迭代对象 将所有 iterable 对象中元素按参数顺序以元素并行方式聚合在一起,得到一个迭代器,迭代器中每个元素是个n元素元组,n 表示函数中输入 iterable 参数数量
>>> num_list1 = [1,2,3,4] >>> num_list2 = [2,3,1,2] >>> list(zip(num_list1,num_list2)) [(1, 2), (2, 3), (3, 1), (4, 2)]
zip() 函数功能等价于
def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() iterators = [iter(it) for it in iterables] while iterators: result = [] for it in iterators: elem = next(it, sentinel) if elem is sentinel: return result.append(elem) yield tuple(result)
除了上面列举的 10 个之外,还有其它 59 个内置函数,想了解的小伙伴可点击下方原文阅读去了解
对于 Python 开发者来说,掌握这些内置函数非常有用,一方面能提高编码效率,另一方面也能提高代码简洁性;在某一方面功能虽然没有第三方库函数强大,但也不能被小觑
好了以上就是本篇文章的全部内容了,最后感谢大家阅读,我们下期见~
参考:https://docs.python.org/3.8/library/functions.html#zip