一.内置函数
嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 作用是提高程序的执行效率,大多编程语言都有自己的内置函数。
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])) # 结果 false
print(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))