当前位置: 代码迷 >> 综合 >> Python-开发之路-内建函数
  详细解决方案

Python-开发之路-内建函数

热度:79   发布时间:2023-09-19 14:13:45.0

Python-开发之路-内建函数
如上图,本次将挑python的内建函数中常用的简要演示一下
为了方便看,将同类方法的函数连在一起演示;


abs():取绝对值

>>> print(abs(-2345))
2345

/# 0,[],”“,(),{},None 这些字符python中会当作布尔值Flase

all():都为真,才为真

#all不接受多个字符串作为参数,只能将这些参数放到一个列表(或元祖等)中
>>> print(all(0,True,1,['qwe','wer',],'qwe'))
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: all() takes exactly one argument (5 given)
#因为0被python认为是False,所以整体为False
>>> print(all(['qwe','wer',True,0,]))
False
#改成1后就变成True了,
>>> print(all(['qwe','wer',True,1,]))
True

any():任一为真,则为真

>>> print(any([None,0,[],(),]))
False
>>> print(any([None,0,[],(),1,]))
True

数字进制转换:bin(),oct(),int(),hex(),

#初始化变量
>>> ret=520
#十进制转为二进制
>>> print(bin(ret))
0b1000001000
#十进制转八进制
>>> print(oct(ret))
0o1010
#十进制转为十进制
>>> print(int(ret))
520
#十进制转十六进制
>>> print(hex(ret))
0x208

bool():判断布尔值

>>> print(bool(0))
False
>>> print(bool(1))
True
>>> print(bool(None))
False
>>> print(bool(""))
False
>>> print(bool("qwertw"))
True

float():将整型数字转为浮点数型

round(float(),num):将浮点型数字,四舍五入到小数点后指定位数(num)

>>> reg=520
>>> float(reg)
520.0
>>> ret = reg/1314
>>> round(ret,4)
0.3957
>>> print(ret)
0.395738203957382

bytes():将字符串转换为字节,可以用来转换字符集【重要】

>>> name = "云端漫步"                                                                                                                                                                                             
>>> ret = bytes(name,encoding='gbk')
>>> reg = bytes(name,encoding='utf-8')
>>> print(ret,reg)
b'\xd4\xc6\xb6\xcb\xc2\xfe\xb2\xbd' b'\xe4\xba\x91\xe7\xab\xaf\xe6\xbc\xab\xe6\xad\xa5'

ord():查找字符在ASCII表中对应的数值

chr():反向查找数值对应ASCII表代表的字符

>>> asg = "B"
>>> ord(asg)
66
>>> chr(ord(asg))
'B'

可以借此实现随机验证码的功能,详细可点此参考


dir(),help():Python中获取帮助信息

>>> dir(dir)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__ new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> help(dir)
Help on built-in function dir in module builtins:dir(...)dir([object]) -> list of strings...

divmod():做除法,并将商和余数以元祖的形势返回

>>> a = 1314
>>> b = 520
>>> divmod(a,b)
(2, 274)

借此可以实现一个小案例:(共234条记录,每页显示25条,共需要几页)

total = 234
per = 25
result = divmod(total,per)
if result[1] == 0:ret = result[0]
else:ret = result[1]
print(ret)

enumerate(): 迭代器,以list的形势返回索引和值

#创建对象来表现
a = [ 11,22,4,33,4,[1,2,3,4,]]
ret = enumerate(a)
print(ret)
print(list(ret))> <enumerate object at 0x0000000000D91480>> [(0, 11), (1, 22), (2, 4), (3, 33), (4, 4), (5, [1, 2, 3, 4])]#或者用for循环迭代器来表现
for index,value in enumerate(a):print(index,value)
    >0 11>1 22>2 4>3 33>4 4>5 [1, 2, 3, 4]

eval(): 执行表达式,拿到结果,并有返回值

ps:eval() arg 1 must be a string, bytes or code object,eval()对参数的类型要去

reg = '1+(2+8)*3'
ret = eval(reg)
print(ret)

compile(): 将字符串转义成python code

reg = '1+(2+8)*3'
ret = compile(reg,'<string>','exec')
print(type(ret),ret)
<class 'code'> <code object <module> at 0x00000000006B28A0, file "<string>", line 1>

exec(): 执行python code,但是没有返回值

reg = "print(eval('1+(2+8)*3'))"
ret = exec(reg)
print(ret)

总结:eval(),相当于将 compile() 和exec()两个函数的方法封装在了一起,compile负责将字符串转义成python code,exec将转义的code进行执行,compile更像是在exec外面加了一层装饰器,并将结合在一起的函数体赋给eval


【重要】filter(): 对可迭代对象进行筛选

ret = [1,2,4,5,5,6,66,78,324,7,4,2,]
reg = filter(lambda a:a>6,ret)print(reg,type(reg))
print(list(reg))

注意输出,如果直接打印返回的对象reg,则会给出内存地址,再来看看类型,class‘filter’,因此要得到结果就得使用可迭代对象的类 再次创建对象’list(reg)’

filter object at 0x0000000000D29E10> <class 'filter'>
[66, 78, 324, 7]

【重要】map(): 对可迭代对象进行操作

ret = [1,2,4,5,5,6,66,78,324,7,4,2,]
pjt = map(lambda b:print(b),ret)print(pjt,type(pjt))
print(list(pjt))

输出,类似filter的结果,可自行体悟

<map object at 0x0000000000D29EB8> <class 'map'>
1
2
4
5
5
6
66
78
324
7
4
2
[None, None, None, None, None, None, None, None, None, None, None, None]

id():获取表达式所在内存地址

ret = [1,2,4,5,5,6,66,78,324,7,4,2,]
reg = id(ret)
print(reg)
D:\python\python.exe D:/python/Project-13/tmp/内建.py
11665992

isinstance() :判断是否为某个类的对象,返回True & Flase

age = 25
print(isinstance(age,str))
print(isinstance(age,int))

len(): 返回字符长度

ps:注意是字符长度,不是字节长度,一个字母,一个汉字都被分为是一个字符

#int整数类,没有len方法,因此无法调用,只能以str类创建对象
age = '31'
name = '詹姆斯'
fav = 'MVP'
dig = [31,11,12]
print(len(age),len(name),len(fav),len(dig))
D:\python\python.exe D:/python/Project-13/tmp/内建.py
2 3 3 3

global() 返回当前代码环境的全局变量,locals() 返回当前代码环境的局部变量, 返回的是字典类型

name = '詹姆斯'def newinfo():fav = '总冠军'age = 31print('15-16赛季,联盟最强')print(globals())print(locals())newinfo()
15-16赛季,联盟最强
{
   'newinfo': <function newinfo at 0x0000000000D4AEA0>, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000000009C7860>, '__spec__': None, 'name': '詹姆斯', '__file__': 'D:/python/Project-13/tmp/内建.py', '__package__': None, '__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__doc__': None}
{
   'fav': '总冠军', 'age': 31}

max() min() sum() :取最大值、最小值、求和

ret = [1,2,4,5,5,6,66,78,324,7,4,2,]
print(max(ret),min(ret),sum(ret))
D:\python\python.exe D:/python/Project-13/tmp/内建.py
324 1 504

pow(x,y,z): 两个参数时表示x的y次方 ;三个参数时表示 x**y %z,在为取余

reg = pow(2,10)
ret = pow(2,10,10)
print(reg,ret)
D:\python\python.exe D:/python/Project-13/tmp/内建.py
1024 4

zip() :接受多个同类型的数据类型,然后‘列’转‘行’,返回一个元组tuple

a = [23,12,32,34]
b = [23,43,127,]
c = [654,2,]
reg = zip(a,b,c)
print(reg,type(reg))
print(list(reg))

从输出中不难看出,以最短的一个序列为准,只匹配最短序列数量的元组元素

D:\python\python.exe D:/python/Project-13/tmp/内建.py
<zip object at 0x0000000000D230C8> <class 'zip'>
[(23, 23, 654), (12, 43, 2)]

最后介绍一下3.5和2.7的一下区别

# python3.5 可按照字符来遍历,也可按照字节
for i in "詹姆斯":print(i)
a = "詹姆斯"
print(a[:3], a[3:6], a[6:9])# python2.7 #只能按照字节
a = "詹姆斯"
print a[:3], a[3:6], a[6:9]
D:\python\python.exe D:/python/Project-13/tmp/内建.py
詹
姆
斯
詹姆斯  詹姆斯