内置函数
现在python一共为我们提供了68个内置函数,讲述过程:
一、其他中的12个
(一)执行 字符串 类型代码的执行
1 eval执行有意义的字符串 ,有返回值
print(eval('1+2'))print(eval("print('美丽')")) #美丽
2 exec执行 有意义 的字符串,简单的 流程控制 ,没有返回值
exec('for i in range(5):print(i)') #0,1,2,3,4
注释:
# exec和eval都可以执行 字符串类型的代码
# eval有返回值 —— 有结果的简单计算
# exec没有返回值 —— 简单流程控制
# eval只能用在你明确知道你要执行的代码是什么
3 compile字符串执行 :编译
ret='for i in range(5):print(i)' c=compile(ret,'','exec') #用exec执行,有返回值 exec(c)
ret='1+2+3+4'
c=compile(ret,'','eval') #''引号原本的功能是放
print(eval(c)) # 用eval执行,没有返回值,所以需要打印
(二)输入输出
1 input
input('提示:')
2 print()
l='a' print(l) #a print(l,end='%%') # a%% end是print中默认的以换行做结尾,这里可以改为%%结尾 print(l,end='%%') #a%%a%% print(l,2,3,5,6,sep='%%') #a%%2%%3%%5%%6 sep是print中元素之间默认用空格隔开,这里可以改成%% print(l,2,3,5,6) #a 2 3 5 6 f=open('上课',mode='w',encoding='utf-8') #打开文件夹,之后通过句柄操作文件 l='mmmm' print(l,file=f) #print中file默认在控制台打印,可以把file=f文件句柄,改成在文件中打印 f.close()
(三)内存相关
1 hash() #在程序的一次执行中,hash值只有一个,但是再次执行时,hash值就会改变
print(hash((0,2,3))) #-19文件执行的操作43780824
2 id()就是内存地址
print(id(1))
(四)文件操作相关(1)
1 open
f=open('上课') print(f.writable()) #False print(f.readable()) #True print(f.readline()) #把上课文件中的内容读出来了:mmmm
(五)调用相关
1 callable 判断是否可以被调用
print(callable(a)) #Flase print(callable(print)) #True print(callable(globals)) #globals 加上s
(六)模块相关
1 import import time print(time.time()) #1515230362.92395 等同于以下例子 t=__import__('time') print(t.time()) #1515230362.92395
# 某个方法属于某个数据类型的变量,就用.调用
# 如果某个方法不依赖于任何数据类型,就直接调用 —— 内置函数 和 自定义函数
(七)帮助
1 help 查看方法运用
# help(str)
(八)查看内置属性
1 dir 查看变量的方法
print(dir([1,2]))
二、 基础数据类型相关 38个
(一)和数据结构相关(24)
1.1和数字相关
1 数据类型
bool int 整形 float # 浮点数(有限循环小数,无限循环小数) != 小数 :有限循环小数,无限循环小数,无限不循环小数 complex 复数,不能比较大小 实部+虚部 两个部分都是浮点数 1+2j 4+5j
2 进制转换
bin 二进制 print(bin(2)) #0b10 oct 八进制 print(oct(2)) #0o2 hex 十六进制 print(hex(2)) #0x2
3 数学运算
abs 取绝对值print(abs(-1))divmod 除余 print(divmod(9,6)) #(1, 3) 商1 余3 round 小数精确 print(round(2,445)) #2 print(round(2,56)) #2 sum 求和 q求和对象是可迭代的 sum(iterable,start) start开始加的值 错误写法 print(sum(1,2)) print(sum([1,2,3,4])) #10 print(sum([1,2,3,4],10)) # 第一个数从10 开始加 min 求最小值 print(min(2,5,6,8)) #2 print(min(2,5,6,8,-0.5,key=abs)) #-0.5 max print(max(2,5,6,8,-1,-8,key=abs)) #8 pow 求幂运算pow(x,y,z) print(pow(2,3)) 2的3次方 print(pow(2,3,3)) #幂运算之后再取余2
(三)列表和元组 可以强转
t=(1,2,3,4) print(list(t)) #[1, 2, 3, 4] print(tuple(t) #再转回元组(1, 2, 3, 4)
1.2相关内置函数
1. reversed 反转
reverse 反转 l=[1,3,6,4] l.reverse() #反转l print(l)
reversed 保留原列表,得到一个反向迭代器 l2=reversed(l) #生成器 print(l2) #<list_reverseiterator object at 0x018539D0> for i in l2:print(i) #4,6,3,1
2 slice 切片
t = (1,2,23,213,5612,342,43) t1=slice(0,5,2) print(t1) #slice(0, 5, 2) 切片 print(t[t1]) # (1, 23, 5612) 把l从索引0到5开始切片按照每隔2个值切片 化简: print(t[slice(0,5,2)]) # (1, 23, 5612)
1.3字符串
3 format #格式化输出
print('今天很{},我很{},是个{}'.format('美好','美丽','美女')) print(format('美丽','>20')) #把字符串以20个长度为标准,左靠齐 print(format('美丽','<20')) #把字符串以20个长度为标准,右靠齐 print(format('美丽','^20')) #把字符串以20个长度为标准,居中
4 bytes
需求把gbk编码的转换为utf-8,python是unicode编码,需要先把'你好'转为gbk 形式 print(bytes('美丽',encoding='GBK')) #等价于==print('美丽'.encode('gbk')) # #b'\xc4\xe3\xba\xc3'把unicode转换为gbk的bytes类型 print((bytes('美丽',encoding='gbk')).decode('gbk').encode('utf-8')) #转换成功 注释:
网页编程是二进制存储 照片视频也是二进制 html网页爬取也是二进制
5.bytearray bytearray(s,encoding='utf-8') 转换编码,特点是可以根据字节码改内容,但是你要提前 知道要改内容的号码
b_bytes=bytearray('你好',encoding='utf-8') print(b_bytes) #'\xe4\xbd\xa0\xe5\xa5\xbd') print(b_bytes[0]) #228 print(b_bytes[1]) #189
6.memoryview 视觉展示,只是给我们看,不占用内存,但是要调用是时候还是会占用内存,用处比较少
memoryview(bytes('hello,eva',encoding='utf-8')
7.ord字符按照unicode转数字
print(ord('你')) #20320 print(ord('1')) #49 print(ord('A')) #65 print(ord('❤')) #10084
8、chr数字按照unicode转字符, 但是从65(A的数字对应65)开始才能转换
print(chr(97)) #a print(chr(98)) # print(chr(65)) #A
9、ascii 字符在ascii码中的内容就打印出来,不是就转换成\u
print(ascii('你') #'\u4f60' print(ascii('A') ) #'A'
10、repr 用于%r格式化输出 ,不同于print的是:会将打印内容的数据类型也一起打印出来
name='egg' print('你好%s'%name) #你好egg print('你好%r'%name) #你好'egg' print(repr('1')) #'1' print('1') #1 print(repr(1)) #1
1.4字符串
11.dict
12、set、
13、frozenset
14、len
15、enumerate枚举
dic={'a':'b','c':'d'} for k,i in enumerate(dic,1):print(k,i)
1.5相关内置函数(8)
16、all 判断是否有bool值是Flase的值,---一假均假---用中括号写进要判断的值,
print(all([' ','ni','你'])) #True
print(all(['','ni','你'])) #Flase
特殊情况 : print(all([])) #Ture
print(all([''])) #Flase
17、any 判断bool值是否有True的值-----一真均真
print(any([' ','ni','你'])) #True print(any(['','ni','你'])) #True print(all([''])) #Flase
18、zip 返回一个迭代器,拉链功能
a=['a','b'] #列表 b=['c','d'] ret=zip(a,b) for i in ret: #('a', 'c')('b', 'd')print(i)
a={'a','b'} #字典 b={'c','d'} ret=zip(a,b) for i in ret:print(i) ##('a', 'c')('b', 'd')和上面效果一样 #简化: a=['a','b'] b=['c','d'] c=['e','f'] for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f')print(i) #字典、列表、元祖混用拉链 a=['a','b','g'] #不是一一对应的话,自动去除多余的 b={'c','d']} #dict list tuple 都可以用zip 来拉链 c=('e','f']) for i in zip(a,b,c): #('a', 'c', 'e')('b', 'd', 'f')print(i)
19、filter filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
def f(x):return x%2==0 g=filter(f,[1,3,5,6,7,8]) #filter 得到是一个迭代器 for i in g:print(i) #6 8 filter过滤的功能
def a(z):return z%2==1 #函数返回值为Ture,则放到新的迭代器中 ret=filter(a,[1,2,3,4,5,6]) #函数名不加括号,因为前面filter要来调用函数名,得到的ret是一个迭代器 for i in ret: #不调用不打印print(i) 功能解析:把可迭代的值传给某个函数,函数来执行
def a(z):return z%2==0 ret=filter(a,[1,2,3,4,5,6]) for i in ret:print(i) 上面那个filter方法等于这个列表推导式的功能 c=[i for i in [1,2,3,4,5,6] if i%2==1] for i in c:print(i)
取出0到100中能够开方的整数 from math import sqrt def num(s):if sqrt(s)%1==0:return True ret=filter(num,range(0,101)) for i in ret:print(i)
20、map
Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,
map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
#例题L = [1, 2, 3, 4, 5, 6, 7, 8]def l(a): return a**2g=map(l,L) #map后得到的也是迭代器print(list(g)) #[1, 4, 9, 16, 25, 36, 49, 64]
或者用for
for i in g: print(i)
注释:
# 结论:filter()之后元素个数会发生改变,map()之后元素个数不会改变
# #filter只管筛选,不会改变原来的值 map值会改变
21、sorted 排序,有key,默认Flse 从小到大排序 reverse=True 从大到小排序
iterable:是可迭代类型;
key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
reverse:排序规则.reverse = True降序或者reverse = False升序,有默认值。
返回值:有序列表:
例 l=[2,1,5,7,-10] print(sorted(l,key=abs,reverse=True)) #[-10, 7, 5, 2, 1] 等同于sort l=[2,1,5,7,-10] l.sort(key=abs,reverse=True) print(l) #[-10, 7, 5, 2, 1] sort使用方法 l=[2,1,5,7,-10] l.sort() print(l) #[-10, 1, 2, 5, 7]
三、匿名函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数
#这段代码 def calc(n):return n**n print(calc(10))#换成匿名函数 calc = lambda n:n**n print(calc(10))