一.内置函数
嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 作用是提高程序的执行效率,大多编程语言都有自己的内置函数。
1.作用域相关
def func(): name = 'alex' print(locals()) # 返回当前作用域名字 print(globals()) # 返回全局作用域名字func()
2.迭代器相关
1. range() 生成数据
2. next() 迭代器向下执行一次
3. iter() 获取迭代器
3.字符串类型待代码的执行
1. eval() 执行字符串类型的代码,返回最终结果
s = '5+6+7'print(eval(s)) # 结果18
2.exec() 执行字符串类型代码
s1 = 'for i in range(10): print(i) 'exec(s1)
3. compile() 将字符串类型的代码进行编译,代码对象可以通过exec()或eval()来执行
'''参数说明 : 1. resource 要执行的代码 , 动态代码片段 2. 文件名 , 代码存放的文件名 , 当传入了第一个参数的时候 , 这个参数给空就可以了 3. 模式 , 取值有 3 个 , 1. exec: 一般放⼀一些流程语句的时候 2. eval: resource 只存放一个求值表达式 . 3. single: resource 存放的代码有交互的时候 . mode 应为 single'''code1 = 'for i in range(10): print(i)'c1 = compile(code1,"",mode='exec')exec(c1)code2 = '5+6+7'c2 = compile(code2,"",mode='eval')print(eval(c2))code3 = 'hobby = input("输入你的兴趣爱好:")'c3 = compile(code3,"",mode='single')exec(c3)print(hobby)
4.输入和输出
1. input() 获取用户输入的内容
2. print() 打印输出
5.内存相关
1. hash() 获取到对象的哈希值(int, str, bool, tuple)
2. id() 获取到对象的内存地址
6.文件操作
open() ⽤于打开一个文件, 创建⼀个文件句柄
7.模块相关
__import__() 用于动态加载类和函数
8.帮助
help() 函数⽤于查看函数或模块用途的详细说明
9.调用相关
callable() ⽤于检查一个对象是否是可调用的. 如果返回True, object有可能调⽤失败, 但如果返回False. 那调用绝对不会成功
10.查看内置属性
dir() 查看对象的内置属性, 方法. 访问的是对象中的__dir__()⽅法
11.数字相关
1. bool() 将给定的数据转换成bool值. 如果不给值. 返回False
2. int() 将给定的数据转换成int值. 如果不给值, 返回0
3. float() 将给定的数据转换成float值. 也就是小数
4. complex() 创建一个复数. 第⼀个参数为实部, 第⼆个参数为虚部. 或者第⼀个参数直接⽤字符串来描述复数
12.进制转换
1. bin() 将给的参数转换成⼆进制
2. otc() 将给的参数转换成八进制
3. hex() 将给的参数转换成十六进制
13.数学运算
1. abs() 返回绝对值
2. divmode() 返回商和余数
3. round() 五舍六入
4. pow(a, b) 求a的b次幂, 如果有三个参数. 则求完次幂后对第三个数取余
5. sum() 求和
6. min() 求最⼩值
7. max() 求最⼤值
14.列表和元组
1. list() 将一个可迭代对象转换成列表
2. tuple() 将⼀个可迭代对象转换成元组
3. reversed() 将⼀个序列翻转, 返回翻转序列的迭代器
4. slice() 列表的切片
st = "我很帅"s = slice(0, 3, 1)print(st[s])
15.字符串相关
1. str() 将数据转化成字符串
2. format() 与具体数据相关, 用于计算各种小数, 精算等
# # 字符串# print(format('test','^20')) # 居中# print(format("test",'<10')) # 左对齐# print(format("test",">10")) # 右对齐# # 数值# print(format(3,'b')) # 二进制# print(format(65,'c')) # 转化成unicode字符# print(format(11,'d')) # 转化成十进制# print(format(11,"o")) # 转化成八进制# print(format(11,"x")) # 转化成十六进制# print(format(11,"X")) # 转化成十六进制大写# print(format(11,'n')) # 十进制# print(format(11)) # 十进制# # 浮点数# print(format(123456789,'e')) # 科学计算法,默认保留六位小数# print(format(123456789,'0.2e')) # 科学计数法. 保留2位小数(小写)# print(format(123456789,'0.2E')) # 科学计数法. 保留2位小数(大写)# print(format(1.23456789,'f')) # 小数点计数法. 保留6位小数# print(format(1.23456789,'0.2f')) # 小数点计数法. 保留2位小数# print(format(1.23456789,'0.10F')) # 小数点计数法. 保留10位小数# print(format(1.23456789,"F")) # 小数点计数法.
3. bytes() 把字符串转化成bytes类型
4. bytearray() 返回⼀个新字节数组. 这个数字⾥里的元素是可变的, 并且每个元素的值得范围是[0,256)
5. memoryview() 查看bytes在内存中的情况
6. ord() 输入字符找带字符编码的位置
7. chr() 输入位置数字找出对应的字符
8. ascii() 是ascii码中的返回该值 不是就返回\u...
9. repr() 返回一个对象的string形式
# repr 就是原封不动的输出, 引号和转义字符都不起作print(repr('大家好,、你,\n,t'))print(repr("很帅哦%s" % 'of course'))
16.数据集合
1. dict() 创建⼀个字典
2. set() 创建⼀个集合
3. frozenset() 创建⼀个冻结的集合. 冻结的集合不能进行添加和删除操作
17.其他相关
1. len() 返回⼀个对象中的元素的个数
2. sorted() 对可迭代对象进⾏排序操作
3. enumerate() 获取集合的枚举对象
4. all() 可迭代对象中全部是True, 结果才是True
5. any() 可迭代对象中有一个是True, 结果就是True
print(all([0,1,2,3])) # 结果 falseprint(any([1,0])) # 结果 true
6. zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成⼀个元组, 然后返回由这些元组成的开了表. 如果各个迭代器的元素个数不⼀致, 则返回列表⻓度与最短的对象相同.
l1 = [1,2,3,4]l2 = ['a',12,3]l3 = [8,7,9]for i in zip(l1,l2,l3): print(i)
7. filter() 过滤
8. map() 会根据提供的函数对指定序列做映射
二.lambda匿名函数
语法: 函数名 = lambda 参数: 返回值
# a = lambda x: x# print(a.__name__) # __name__查看函数名# def func():# return '很帅哦'# ret = func()# print(ret)# print(func.__name__)
三.sorted()排序
语法: sorted(Iterable, key=None, reverse=False)
Iterable: 可迭代对象
key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进⾏排序
reverse: 是否是倒叙. True: 倒叙, False: 正序
# lst = ['鲁班七号aaaa','李白aaa','流经岁月净化aa']# # new_lst = sorted(lst,key=lambda s:len(s),reverse=True)# # print(new_lst)# new_lst = sorted(lst,key=lambda s: s.count('a'))# print(new_lst)
四.filter()筛选函数
语法: filter(function. Iterable)
function: 用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或者False来判断是否保留此项数据
# lst = [# {'name':'alex','sex':'女',"age":"20"},# {'name':'wusir','sex':'女',"age":"45"},# {'name':'fanke','sex':'女',"age":"27"},# {'name':'keshao','sex':'女',"age":"28"}# ]# # def func(dic):# # return dic['age']# it = filter(lambda dic: dic['age'],lst)# print(list(it))
五.map()映射函数
语法: map(function, iterable)
可以对可迭代对象中的每⼀个元素进行映射. 分别取执行function
# lst = [9,8,7,6]# lst1 = [1,2,3,4]# def func(s,y):# return s * y# it = map(func,lst,lst1)# print(list(it))
六.递归
在函数中调用函数本身. 就是递归
# import os# filePath = 'D:\python_worksapce'# def read(filePath,n):# it = os.listdir(filePath) # 打开文件路径# for el in it:# fp = os.path.join(filePath,el) # 获取文件绝对路径# if os.path.isdir(fp): # 判断是否为文件夹# print('\t'*n,el)# read(fp,n+1)# else:# print('\t'*n,el) # 递归出口# read(filePath,0)
七.二分查找
⼆分查找. 每次能够排除掉⼀一半的数据. 查找的效率非常⾼. 但是局限性比较⼤. 必须是有序列才可以使⽤用⼆分查找
# lst = [12,23,34,54,56,67,78,89,90,94]# left = 0# right = len(lst) - 1# n = 78# while left <= right :# middle = (left + right) // 2# if n < lst[middle]:# right = middle - 1# elif n > lst[middle]:# left = middle + 1# else:# print('存在')# print(middle)# break
# lst = [12,23,34,54,56,67,78,89,90,94]# def read(left,right,n):# middle = (left+right) // 2# if n in lst:# pass# else:# return -1# if n > lst[middle]:# left = middle + 1# elif n < lst[middle]:# right = middle - 1# else:# return middle# return read(left,right,n)# print(read(left=0,right=len(lst)-1,n=65))