内置函数
截止到python版本3.6.2,现在python一共为我们提供了68个内置函数
作用域相关
locals:函数会以字典的类型返回当前位置的全部局部变量
globals:函数以字典的类型返回全部全局变量
这两个一样,因为是在全局执行的
a = 1b = 2print(locals())print(globals())def func(argv):c = 2print(locals())print(globals())func(3)
其他相关
字符串类型代码的执行eval,exec,compile
eval:执行字符串类型的代码,并返回最终结果
ret = eval('2 + 2')print(ret) # 40n = 20ret = eval('n + 23')print(ret) # 43eval('print("Hello world")')
exec:执行字符串类型的代码
s = '''for i in range(5):print(i)'''exec(s)

compile:将字符串类型的代码编译。代码对象能够通过exec语句来执⾏或者eval()进⾏求值。
1. 参数source:字符串。即需要动态执⾏的代码段。
2. 参数 filename:代码⽂件名称,如果不是从⽂件读取代码则传递⼀些可辨认的值。当传⼊
了source参数时,filename参数传⼊空字符即可。
3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流
程语句时,model应指定为‘exec’;当source中只包含⼀个简单的求值表达式,model应指
定为‘eval’;当source中包含了交互式命令语句,model应指定为’single’。
# 流程语句是用execcode1 = 'for i in range(5): print(i)'compile1 = compile(code1,'','exec')exec(compile1)# 简单求值表达式用evalcode2 = '1+2+3'compile2 = compile(code2,'','eval')eval(compile2)#交互语句用singlecode3 = 'name = input("please input your name:")'compile3 = compile(code3,'','single')single(compile3)print(name)
有返回值的字符串形式的代码⽤eval,没有返回值的字符串形式的代码⽤exec,⼀般不⽤
compile。
内存相关 hash id
hash:获取⼀个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
print(hash(12322))print(hash('123'))print(hash('arg'))print(hash('aaron'))print(hash(True))print(hash(False))print(hash((1,2,3)))
id:⽤于获取对象的内存地址。
print(id('abc'))print(id('123'))
callable:函数⽤于检查⼀个对象是否是可调⽤的。如果返回True,object仍然可能调⽤失
败;但如果返回- False,调⽤对象ojbect绝对不会成功。
print(callable(0)) #FALSEprint(callable('hello')) #FALSEdef demo1(a, b):return a + bprint(callable(demo1)) # TRUEclass Demo2:def test1(self):return 0print(callable(Demo2)) # TRUEa = Demo2()print(callable(a)) #FALSE# class Demo2没有实现 __call__, 返回 False
查看内置属性
dir:函数不带参数时,返回当前范围内的变量、⽅法和定义的类型列表;带参数时,返回参
数的属性、⽅法列表。如果参数包含⽅法 dir() ,该⽅法将被调⽤。如果参数不包
含 dir() ,该⽅法将最⼤限度地收集参数信息。
print(dir())print(dir([ ]))
![WMX[HBGK0I@)]U_J{TGO8%W.png](/uploads/projects/u21007123@zpxpam/6b269cddb7a9cdd5cc9dca55eb78a6fb.png)
range:函数可创建⼀个整数对象,⼀般⽤在 for 循环中。
next:内部实际使⽤了 next ⽅法,返回迭代器的下⼀个项⽬。
# 首先获得Iterator对象:it = iter([1,2,3,4,5,6])# 循环while True:try:# 获得下一个值x = next(it)print(x)except StopIteration: # 遇到StopIteration就退出循环break# 输出1,2,3,4,5,6
iter:函数⽤来⽣成迭代器(讲⼀个可迭代对象,⽣成迭代器)。
from collections import Iterablefrom collections import Iterator# 可迭代对象不一定是迭代器,迭代器一定是可迭代对象l = [1,2,3,4] # 可迭代对象,但不是迭代器print(isinstance(l,Iterable))print(isinstance(l,Iterator))l1 = iter(l) # 从一个可迭代对象生成迭代器print(isinstance(l1,Iterable))print(isinstance(l1,Iterator))
基础数据类型相关
数字相关(14)
数据类型(4个):
bool :⽤于将给定参数转换为布尔类型,如果没有参数,返回 False。
int:函数⽤于将⼀个字符串或数字转换为整型。
print(int())print(int('12'))print(int(3.6))print(int('0100',base=2)) # 将2进制的 0100 转化成十进制。结果为 4
float:函数⽤于将整数和字符串转换成浮点数。
complex:函数⽤于创建⼀个值为 real + imag * j 的复数或者转化⼀个字符串或数为复数。
如果第⼀个参数为字符串,则不需要指定第⼆个参数。
print(complex(1,2))print(complex(1))print(complex("1"))print(complex("1+2j"))
进制转换(3个):
bin:将⼗进制转换成⼆进制并返回。
oct:将⼗进制转化成⼋进制字符串并返回。
hex:将⼗进制转化成⼗六进制字符串并返回。
print(bin(10),type(bin(10)))print(oct(10),type(oct(10)))print(hex(10),type(hex(10)))
数学运算(7):
abs:函数返回数字的绝对值。
divmod:计算除数与被除数的结果,返回⼀个包含商和余数的元组(a // b, a % b)。
round:保留浮点数的⼩数位数,默认保留整数。 -pow:函数是计算x的y次⽅,如果z在存
在,则再对结果进⾏取模,其结果等效于pow(x,y) %z)
print(abs(-5)) # 5print(divmod(7,2)) # (3, 1)print(round(7/3,2)) # 2.33print(round(7/3)) # 2print(round(3.32567,3)) # 3.326print(pow(2,3)) # 8print(pow(2,3,3)) # 2
sum:对可迭代对象进⾏求和计算(可设置初始值)。
min:返回可迭代对象的最⼩值(可加key,key为函数名,通过函数的规则,返回最⼩
值)。
max:返回可迭代对象的最⼤值(可加key,key为函数名,通过函数的规则,返回最⼤
值)。
print(sum([1,2,3]))print(sum([1,2,3],100))print(min([1,2,3]))ret = min([1,2,3,-10],key=abs)print(ret)dic = {'a':3,'b':2,'c':1}print(min(dic,key=lambda x:dic[x]))# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键print(max([1,2,3]))ret = max([1,2,3,-10],key=abs)print(ret)dic = {'a':3,'b':2,'c':1}print(max(dic,key=lambda x:dic[x]))
数据结构相关(24个)
列表和元祖(2个)
list:将⼀个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
tuple:将⼀个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。
l = list((1,2,3))print(l)l = list({1,2,3})print(l)l = list({'k1':1,'k2':2})print(l)tu = tuple((1,2,3))print(tu)tu = tuple([1,2,3])print(tu)tu = tuple({'k1':1,'k2':2})print(tu)
相关内置函数(2个)
reversed:将⼀个序列翻转,并返回此翻转序列的迭代器。
slice:构造⼀个切⽚对象,⽤于列表的切⽚。
ite = reversed(['a',2,4,'f',12,6])for i in ite:print(i)l = ['a','b','c','d','e','f','g']sli = slice(3)print(l[sli])sli = slice(0,7,2)print(l[sli])
字符串相关(9)
str:将数据转化成字符串。
format:与具体数据相关,⽤于计算各种⼩数,精算等。
# 字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐print(format('test','<20'))print(format('test','>20'))print(format('test','^20'))# 整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' Noneprint(format(192,'b')) # 转换为二进制print(format(97,'c')) # 转换unicode成字符print(format(11,'d')) # 转换成10进制print(format(11,'o')) # 转换为8进制print(format(11,'x')) # 转换为16进制,小写字母表示print(format(11,'X')) # 转换为16进制,大写字母表示print(format(11,'n')) # 和d一样print(format(11)) # 和d一样# 浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' Noneprint(format(314159265,'e')) # 科学计数法,默认保留6位小数print(format(314159265,'0.2e')) # 科学计数法,保留2位小数print(format(314159265,'0.2E')) # 科学计数法,保留2位小数,大写Eprint(format(3.14159265,'f')) # 小数点计数法,默认保留6位小数print(format(3.14159265,'0.10f')) # 小数点计数法,保留10位小数print(format(3.14e+10000,'F')) # 小数点计数法,无穷大转换成大小字母# g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数print(format(0.00003141566,'.1g'))# p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点print(format(0.00003141566,'.2g'))# p=2,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点print(format(3.1415926777,'.1g'))# p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留0位小数点print(format(3.1415926777,'.2g'))# p=2,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留1位小数点print(format(3141.5926777,'.2g'))# p=2,exp=3 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点print(format(0.00003141566,'.1n')) # 和g相同print(format(0.00003141566)) # 和g相同
bytes:⽤于不同编码之间的转化。
s = '你好'bs = s.encode('utf-8')print(bs)s1 = bs.decode('utf-8')print(s1)bs = bytes(s,encoding='utf-8')print(bs)b = '你好'.encode('gbk')b1 = b.decode('gbk')print(b1.encode('utf-8'))
bytearry:返回⼀个新字节数组。这个数组⾥的元素是可变的,并且每个元素的值范围: 0
<=x<256
ret = bytearray('aaron',encoding='utf-8')print(id(ret))print(ret)print(ret[0])ret[0] = 65print(ret)print(id(ret))
memoryview: 内存查看对象,是指对⽀持缓冲区协议的数据进⾏包装,在不需要复制对象
基础上允许Python代码访问。
ret = memoryview(bytes('你好',encoding='utf-8'))print(len(ret))print(ret)print(bytes(ret[:3]).decode('utf-8'))print(bytes(ret[3:]).decode('utf-8'))
ord:输⼊字符找该字符编码的位置
chr:输⼊位置数字找出其对应的字符
ascii:是ascii码中的返回该值,不是就返回/u…
# ord 输入字符找该字符编码的位置print(ord('a'))print(ord('中'))# chr 输入位置数字找出其对应的字符print(chr(97))print(chr(20013))# 是ascii码中的返回该值,不是就返回/u...print(ascii('a'))print(ascii('中'))
repr:返回⼀个对象的string形式
name = 'aaron'print('Hello %r'%name)str1 = '{"name":"aaron"}'print(repr(str1))print(str1)
数据集合(3个)
dict:创建⼀个字典。
set:创建⼀个集合。
frozenset:返回⼀个冻结的集合,冻结后集合不能再添加或删除任何元素。
相关内置函数(8个)
len:返回⼀个对象中元素的个数。
sorted:对所有可迭代的对象进⾏排序操作。
l = [('a',1),('c',3),('d',4),('b',2)]print(sorted(l,key=lambda x:x[1]))print(sorted(l,key=lambda x:x[1],reverse=True)) # 降序
enumerate: ⽤于将⼀个可遍历的数据对象(如列表、元组或字符串)组合为⼀个索引序列,同
时列出数据和数据下标,⼀般⽤在 for 循环当中。
print(enumerate([1,2,3]))for i in enumerate([1,2,3]):print(i)for i in enumerate([1,2,3],100):print(i)
all:可迭代对象中,全都是True才是True
any:可迭代对象中,有⼀个True 就是True
print(all([1,2,True,0]))print(any([1,'',0]))
zip:函数⽤于将可迭代的对象作为参数,将对象中对应的元素打包成⼀个个元组,然后返
回由这些元组组成的列表。如果各个迭代器的元素个数不⼀致,则返回列表⻓度与最短的对
象相同。
l1 = [1,2,3,]l2 = ['a','b','c',5]l3 = ('*','**',(1,2,3))for i in zip(l1,l2,l3):print(i)
filter:⽤于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
def func(x): return x%2 == 0ret = filter(func,[1,2,3,4,5,6,7,8,9,10])print(ret)for i in ret:print(i)
map:会根据提供的函数对指定序列做映射。Python 3.x 返回迭代器
def square(x):return x**2ret1 = map(square,[1,2,3,4,5,6,7,8])ret2 = map(lambda x:x ** 2,[1,2,3,4,5,6,7,8])ret3 = map(lambda x,y : x+y,[1,2,3,4,5,6,7,8],[8,7,6,5,4,3,2,1])for i in ret1:print(i,end=' ')print('')for i in ret2:print(i,end=' ')print('')for i in ret3:print(i,end=' ')
匿名函数
匿名函数:为了解决那些功能很简单的需求⽽设计的⼀句话函数。
# 这段代码def calc(n):return n ** nprint(calc(10))# 换成匿名函数calc = lambda n: n ** nprint(calc(10))
函数名 = lambda 参数:返回值
- 参数可以有多个,⽤逗号隔开
2. 匿名函数不管逻辑多复杂,只能写⼀⾏,且逻辑执⾏结束后的内容就是返回值
3. 返回值和正常的函数⼀样可以是任意数据类型
```python l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={‘k1’:10,’k2’:100,’k3’:30}
print(max(dic)) print(dic[max(dic,key=lambda k:dic[k])])
res = map(lambda x:x**2,[1,5,7,4,8]) for i in res: print(i)
res = filter(lambda x:x>10,[5,8,11,9,15]) for i in res: print(i) ```
