python内置函数

callable  ['kɔːləb(ə)l] 》

判断是否能被调用

print(callable(print))
a = 1
print(callable(a))

结果:
    True
    False

help》《dir

查看都有什么功能

print(help(str)) #详细
print(dir(str))  #不那么详细
结果:
class str(object)
 |  str(object='') -> str
 |  str(bytes_or_buffer[, encoding[, errors]]) -> str
 |  
 。。。。

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

import

#某个方法属于某个数据类型的变量就用.调用
#如果某个方法不依赖于任何数据类型,就直接调用 -- 内置函数 和自定义函数

timea = __import__('time')
print(timea.time()) #一般都不这么写
import time
print(time.time())
结果:
1536909573.9048362
1536909573.904869
#结果是时间戳

open

打开文件

f = open()
print(f.writable()) #能不能写 是False 是不可写 True 可写
print(f.readable()) #能不能读 是False 是不可写 True 可写

id》《hash

id号和hash值

id() #内存id号
hash() #hash值
print(hash([])) #不可哈希 (字符串 数字 元祖 可哈希)
对于相同可hash的数据的 hash值在一次程序的执行过程中 总是不变的

print

打印

print('123\n',end='') #注意print end参数默认就是有'\n'
print(1,2,3,4,5,6,sep='|') #指定输出多个值之间的分隔符
f = open('file','w')
print('aaa',file=f) #输出定向 不输出屏幕了 直接输出到文件里面
#进度条
import time #因为Mac电脑执行快 自己修改sleep时间 自己测试
for i in range(0,101,2):
    time.sleep(0.5)
    char_num = i // 2
    res ='\r%s%% : %s\n' %(i,'*'*char_num) \
        if i == 100 else '\r%s%% : %s' %(i,'*'*char_num)
    print(res,end='',flush=True)

compile [kəm'paɪl] 》

编译字符串执行

编译字符串执行
###流程类型exec
code1 = 'for i in range(0,10):print(i)'
compile1 = compile(code1,'','exec')
exec(compile1)
####简单计算类型eval
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval')
print(eval(compile2))
#####single交互类型
code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single')
exec(compile3)  #执行这段代码 会产生一个name的变量
print(name)  #name是存在的 字符串相关的代码 其实name是存在的

exec [ɪg'zek; eg-] 》《eval  [ɪ'væl] 

可以执行字符串代码类型的代码

exec('print(123)')
eval('print(123)')   #正常的python语句都可以执行

print(eval('1+2+3+3'))   #有返回值   ---有结果的简单计算
print(exec('1+2+3+3'))  #没有返回值   ----简单流程控制
exec和eval都可以执行字符串类型的代码 eval有返回值 exec没有返回值
eval只能用在你明确知道你要执行的代码是什么
例子:
code = '''for i  in range(10):
    print(i*'*')
'''
exec(code)

bool》《int》《float》《complex ['kɒmpleks] 

这个没什么可以说的 True False 数字 小数 复数

bool    #布尔值
int     #整数
float   #浮点 
complex #复数 不能比较大小 是由 实数 + 虚数 == 复数
##数据强制转换时候 用

bin》《oct》《hex

print(bin(10)) #转换成二进制      0b 代表二进制
print(oct(10)) #转换成八进制      0o 代表八进制
print(hex(10)) # 转换成十六进制    0x 代表十六进制

abs

绝对值

print(abs(-5))
结果:5
#求绝对值

divmod

返回一个元组 第一个值是除法得知 第二个值是除不尽剩余的数字

print(divmod(7,2))  #div除法  mod 取余 7➗2=3余1 结果是(3,1)
print(divmod(500,40))  #分页用的比较多 一共有五百条记录 每页我准备放四十条 我能放几页 最后一页放几条

round [raʊnd] 

控制小数点

print(round(3.13159,3)) #小数的精确  后面的保留2位

pow

幂运算

print(pow(2,3)) #求幂运算  完全等于2**3 2的3次幂
print(pow(2,3,3))  #2的3次方 8取余3 就是2
print(pow(3,2,1))
print(2**3)

sum

求和

sum(iterable=[1,2,3,4,5],start='')  #第二个参数不允许关键字传参
sum(可迭代,从几开始加可迭代序列)
sum([1,2,3,4,5])

min》《max

最小值 最大值

print(min([1,2,3,4,5]))
print(min(1,2,3,4,-1))
print(min(1,2,3,4,5,6,-4,key = abs)) #key 已绝对值判断最小值

print(max(1,2,3,4,5,6,7))
print(max(1,2,3,4,5,6,-10,key = abs)) #key 已绝对值判断最大值

#min max 函数计算大小 要等key对应的函数执行结果出来后,计算

 《list》《tuple

列表 元组

list = [1,2,3,4,5] #可变类型
tuple = (1,2,3,4,5) #不可变类型
#强制转换用

#python有哪些数据类型 int bool 。。。
#python有哪些数据结构:dict list tuple set str 重点不能忘的 dict tuple 别的语言没有

reversed  [rɪ'vɜ:st] 》

倒序

l = [1,2,3,4,5]
l.reverse()
print(l)  #修改原列表
l2 = reversed(l)
print(l2) #返回一个迭代器 (iter)迭代器的关键字
print(list(l2)) #可以强制转换成list
for i in l2:
    print(i)
#返回一个反序的迭代器 保留愿列表

slice [slaɪs] 

这个函数可以定制 切片的规则

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2) #这块拿到是切片规则
print(l[sli])  #这是开始切
print(l[1:5:2]) #效果一样

format

调整格式

print(format('test','<20')) #左对其
print(format('test','>20')) #右对其
print(format('test','^20')) #居中

bytes

转换成bytes
我拿到的是gbk编码的 我想转成utf-8编码

print(bytes('你好',encoding='gbk').decode('gbk')) #unicode 转换成gbk的bytes
print(bytes('你好',encoding='utf-8').decode('utf-8')) #unicode 转换成utf-8
网络编程 只能传二进制 文件存储 照片,视频也是二进制 html网页 我们爬去到的也是bytes编码
以上拿到的数据都是bytes类型

bytearray

修改字节,对于大数据变量修改,某一小部分。只能通过字符编码来修改

b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])
#一般都是修改字节,对于大数据变量修改,某一小部分。只能通过字符编码来修改

《 memoryview  ['mem(ə)rɪ]  [vjuː] 》

切片 bytes 

l = 'adsasdasdasd'
v= memoryview(bytearray(l,'utf-8'))
print(v)
#切片---字节类型的切片 不占内存 你能看到就是字节 你转换成字符串就占空间了

ord》《chr

print(ord(''))  #打印ASCII值
print(ord('a'))
print(ord('1'))
print(chr(49))  #ASCII 数值对应的字符串
print(chr(97))
print(chr(20320))
#返回值是对应的十进制整数。按照unicode 

ascii

ascii表 对照信息 如果没有就转成\u

print(ascii(''))
print(ascii('ni'))
print(ascii('1'))
print(ascii(10))
#只要是ascii码中的内容,就打印出来,不是就转换成\u

repr

保持原样

name = 'egg'
print('你好%r'%name)
print(repr('1'))
print(repr(1))
#让变量原封不动的输出出来 

len

字符串长度

print(Len('asdasdasdasd))

enumerate  [ɪ'njuːməreɪt] 》 

索引跟列表 组合  返回值:(列表索引,列表的元素)

l = [1,2,3,4,5,'a','b',[10,11,12]]
print(list(enumerate(l)))
#组合 为一个索引值 和列表值 的序列

all》《any

all判断可迭代对象里面是否存在空值,0,None, 就是False

any 判断可迭代对象里面只要有一个不是空置,0,None 就是True

print(all(['1','',123]))  #接受一个可迭代的
print(all(['a','123',]))
print(all([0,'123']))
#任何一个空值或着0 都是false
print(any([1,' ',None]))

zip

拉链 把两个可迭代的 组合多个元组

l = [1,2,3,4,5,6,7,8,9]
l2 = ['a','b','c','b','e','f']
l3 = (1,2,3,4,5,6)
l4 = {1,2,3,4,5}
l5 = {'a':1,'b':2}

res = zip(l,l2,l3,l4,l5) #得到的是可迭代对象
print(list(res))

结果:
[(1, 'a', 1, 1, 'a'), (2, 'b', 2, 2, 'b')]
 

filter

遍历序列中的每个元素,判断每个元素得到布尔值,如果是True则留下来(组合为一个索引序列,可迭代对象)

#filter(函数名称,可迭代对象)
def is_odd(x):
    return x % 2 == 1 #如果等于1 就是True 不等于就是False
print(list(filter(is_odd,[1,2,3,4,5,6,7])))
#每次list里面出来取函数里面取计算,true留下 False 不要了
#判断列表中的空值
def is_none(x):
    return x and str(x).strip()
# return 是 print(bool(x))==True and print(bool(srt(x).strip()))==True 所有前后都是true的留下
print(list(filter(is_none,[1,2,3,'','asd d',None,'asd'])))

问题:请利用filter()过滤出1~100中平方根是整数的数

from math import sqrt #导入模块 sqrt 就是开平方
def func(x):
    res = sqrt(x) #进行开平方运算
    return res % 1 == 0
print(list(filter(func,range(0,101)))) 
结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

map

处理序列中的每个元素,得到的结果是一个‘列表’,该‘列表’元素个数及位置与原来一样

print(list(map(abs,[1,-1,2,-4])))
#结果:
[1, 1, 2, 4]
#执行前后元素个数不变
    #值可能发生改变

sorted

排序,可以自己写函数规则进行可迭代序列的各种排序方法

#--------------------sort------------------
l = [1,-4,6,5,-10]
l.sort(key = abs) #在原来的列表基础上 进行排序
print(l)
#-------------------------------------------
#--------------------sorted------------------
print(sorted(l, reverse = True)) #从大到小排序
print(sorted(l, reverse = False)) #从小到大排序
print(l) #保留了原来的列表
#sorted 只有在数据小,想保存原列表时候在考虑在用
#--------------------------------------

问题:列表按照每一个元素的len排序

l = ['123123','asdqsda',[1,2,3,1,2,3,1,2,3],'找小四','0.111']
def func(x):
    return len(str(x))
print(sorted(l,key = func,reverse = True))
结果:[[1, 2, 3, 1, 2, 3, 1, 2, 3], 'asdqsda', '123123', '0.111', '找小四']
#可能有更好的办法此处不一一举例

 匿名函数lambda

lambda 参数,参数2:返回值表达式

和五个特殊的内置函数可以结合使用(max,min,filter,map,sorted)

calc = lambda x,y: x+y
print(calc(2,3))
结果:5
-------------------------------------------------------------------------------------------
#判断下列字典中values最大的
dic={'k1':10,'k2':100,'k3':30}
print(max(dic,key = lambda k:dic[k]))  #字典的key值 每次都会被带入lambda里面 dic[key] == values
-------------------------------------------------------------------------------------------
l = [1,2,3,4,11,22,33,445,2123,12315123]
print(min(list(filter(lambda x : x > 10,l))))  #结果是11
#先把l中的每个元素经过filter函数里面的lambda表达式比对出来,在进行min函数比对
-------------------------------------------------------------------------------------------
#.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
#考的知识点 zip map lambda 迭代器 匿名函数 内置函数
res = zip((('a'),('b')),(('c'),('d')))
ret = map(lambda x : {x[0]:x[1]},res)
print(list(ret))
print(list(map(lambda x : {x[0]:x[1]},zip((('a'),('b')),(('c'),('d'))))))

 

posted on 2019-08-23 16:10  I我非柠檬为何心酸I  阅读(330)  评论(0编辑  收藏  举报