python内置函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python内置函数相关的知识,希望对你有一定的参考价值。
一、函数知识补充
函数不设置值,默认返回None;函数中参数都是按引用传递,函数里修改了参数,原始参数也会修改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | li = [ 11 , 22 , 33 , 44 ] def f1(arg): arg.append( 55 ) ret = f1(li) print (ret) # 执行结果: None #把li重新赋值,f1函数没有设置返回值,默认返回None,所以结果应该是None print (li) # 执行结果:[11, 22, 33, 44, 55] # 说明:函数中参数都是按引用传递。如果你在函数里修改了参数,那么原始的参数也被改变了。 |
二、内置函数
callable(object)
中文说明:检查对象object是否可调用。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
注意:类是可调用的,而类的实例实现了__call__()方法才可调用。
示例:
1 2 3 4 5 6 7 8 9 | >>> def f1(arg): ... arg.append( 55 ) ... >>> f2 = 11 >>> >>> print ( callable (f1)) True >>> print ( callable (f2)) False |
chr(i)
中文说明:返回整数i对应的ASCII字符。与ord()作用相反。
参数x:取值范围[0, 255]之间的正数。
1 2 3 4 5 6 | >>> n = 66 >>> print ( chr (n)) B >>> n = 67 >>> print ( chr (n)) C |
ord(i)
中文说明:以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值
1 2 3 4 | >>> ord ( "J" ) 74 >>> ord ( "K" ) 75 |
ord()与chr()使用实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 生成随机验证码: import random li = [] while True : for i in range ( 6 ): temp = random.randrange( 65 , 91 ) #随机生成65-90的数字,这是ASCII中A-Z中的对应数字 c = chr (temp) #通过chr()方法将数字转换成字母 li.append(c) #加入到列表中,生成一个六位的验证码 result = "".join(li) #通过join转换成字符串输出 print (result) #随机验证码优化,字母和数字随机出现 import random li = [] for i in range ( 6 ): #验证码是六位循环6次,通过append方法生成六个字母或数字 r = random.randrange( 0 , 5 ) #r随机生成0-5的数字,只要r等于2或4,则产生数字,否则则产生字母。 if r = = 2 or r = = 4 : #因为每次随机生成的数可能是2或4,故此每一位都有可能生成数字或字母。 num = random.randrange( 0 , 10 ) li.append( str (i)) else : temp = random.randrange( 65 , 91 ) c = chr (temp) li.append(c) result = "".join(li) print (result) |
compile()
中文说明:把字符串编译城python代码
eval()
中文说明:执行表达式,有返回值
exec()
中文说明:执行python代码或字符串没有返回值,如果接收的是字符串就先编译再执行,如果是python代码就直接执行
eval和exec实例:
1 2 3 4 | >>> print ( exec ( "7+8" )) None >>> print ( eval ( "7+8" )) 15 |
dir()
中文说明:快速查看对象提供了哪些功能
实例:
1 2 3 | >>> dir ( list ) [ ‘__add__‘ , ‘__class__‘ , ‘__contains__‘ , ‘__delattr__‘ , ‘__delitem__‘ , ‘__delslice__‘ , ‘__doc__‘ , ‘__eq__‘ , ‘__format__‘ , ‘__ge__‘ , ‘__getattribute__‘ , ‘__getitem__‘ , ‘__getslice__‘ , ‘__gt__‘ , ‘__hash__‘ , ‘__iadd__‘ , ‘__imul__‘ , ‘__init__‘ , ‘__iter__‘ , ‘__le__‘ , ‘__len__‘ , ‘__lt__‘ , ‘__mul__‘ , ‘__ne__‘ , ‘__new__‘ , ‘__reduce__‘ , ‘__reduce_ex__‘ , ‘__repr__‘ , ‘__reversed__‘ , ‘__rmul__‘ , ‘__setattr__‘ , ‘__setitem__‘ , ‘__setslice__‘ , ‘__sizeof__‘ , ‘__str__‘ , ‘__subclasshook__‘ , ‘append‘ , ‘count‘ , ‘extend‘ , ‘index‘ , ‘insert‘ , ‘pop‘ , ‘remove‘ , ‘reverse‘ , ‘sort‘ ] |
help()
中文说明:显示更详细的帮助信息
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | >>> help ( dict ) Help on class dict in module __builtin__: class dict ( object ) | dict () - > new empty dictionary | dict (mapping) - > new dictionary initialized from a mapping object ‘s | (key, value) pairs | dict (iterable) - > new dictionary initialized as if via: | d = {} | for k, v in iterable: | d[k] = v |
isinstance()
中文说明:判断对象是不是某个类的实例,如果是,则返回True。不是,返回False
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | li = [ 11 , 22 , 33 , 44 , [ 55 , 66 , 77 , 88 ]] for i in li: if isinstance (i, list ): for v in i: print (v) else : print (i) |
说明:嵌套列表,想要显示11,22,33,44,55,66,77,88这样的结果只一个for循环是不行的,这时可以判断如果i的值是list,就再接一个for循环输出。
divmod()
中文说明:求出a除以b的商和余数,并返回到一个集合中。
实例:
1 2 3 4 5 6 | r = divmod ( 97 , 10 ) print (r[ 0 ]) print (r[ 1 ]) r,r1 = divmod ( 97 , 10 ) print (r) print (r1) |
例如在浏览博客的时候需要对文章进行分页显示,97篇文章,每页显示10篇,通过divmod可以求出商和余数,如果余数为0则页数为商,否则页数就是商加1
filter()
中文说明:循环循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def f2(a): if a > 22 : return True li = [ 11 , 22 , 33 , 44 , 55 ] #filter,循环循环第二个参数,让每个循环元素执行函数,如果函数返回值True,表示元素合法。 ret = filter (f2, li) print ( list (ret)) 执行结果为:[ 33 , 44 , 55 ] 提示: filter (f2,li) 第二个参数li可以是列表、字典等可迭代的数据,循环第二个参数,把值传给 第一个参数(函数)里去。可以用来筛选 list 、 dict 中符合条件的内容。 #lambda表达式自动return f1 = lambda a: a > 30 ret = f1( 10 ) print (ret) li = [ 11 , 22 , 33 , 44 , 55 ] result = filter ( lambda a: a > 33 , li) print ( list (result)) |
map()
中文说明:map(函数,可迭代的对象(可以for循环的东西)),想对列表字典等进行批量处理的时候,比如统一加100等
实例:
1 2 3 4 5 6 7 8 9 | def f1(a): return a + 100 li = [ 11 , 22 , 33 , 44 , 55 ] n = ( map (f1, li)) print ( list (n)) lambda 表达式使用: li = [ 11 , 22 , 33 , 44 , 55 ] n = map ( lambda a: a + 100 , li) print ( list (n)) |
filter和map的区别:
filter:函数返回True,将元素添加到结果中
map: 将函数返回值添加到结果中
hash()
中文说明:生成一个值的hash值
例:
1 2 3 | s = "kkk" print ( hash (s)) dic = { "akdflakjdfklajlkjakldflllllllllllldjjjjjjjjjjjjjjsssssss" : 1 } |
提示:在内存中存的时候不会把这么长的key存进去,而是把key求出hash值,存到内存中。所有语言都是这样用的。
max() 最大值
sum() 求和
min() 最小值
reversed() 反转
round() 四舍五入
slice() 切片
sorted(li) 排序
在python2中,len()求字符串长度,是通过字节的方式,在python3中是通过字符的方式。
1 2 3 4 5 6 | s = "李杰" print ( len (s)) #python3中通过字节的方式求长度。 s = "李杰" b = bytes(s, encoding = ‘utf-8‘ ) print ( len (b)) |
以上是关于python内置函数的主要内容,如果未能解决你的问题,请参考以下文章