欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

day13 内置函数

程序员文章站 2022-05-18 22:25:10
参考资料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac 内置函数: 作⽤域相关: locals() 返回当前作用域中的名字 globals() 返回全局作用域中的名字 迭代器相关: range() ⽣成数据 next() ......

参考资料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac

内置函数:

作⽤域相关:

locals()     返回当前作用域中的名字

globals()    返回全局作用域中的名字

迭代器相关:   

range()    ⽣成数据   

next()   迭代器向下执⾏ ⼀次, 内部实际使用了__next__()⽅法返回迭代器的下一个项目   

iter()     获取迭代器, 内部实际使用的是__iter__()方法来获取迭代器

 

字符串类型代码的执行   

eval()   执行字符串类型的代码. 并返回最终结果

exec()       执行字符串类型的代码

compile()   将字符串类型的代码变异. 代码对象能够通过exec语句句来执行或者eval()进行求 值

有返回值的字符串形式的代码用eval(). 没有返回值的字符串形式的代码用exec(). 一般很少用 到compile()

输入和输出相关:   

input()    获取用户输入的内容   

print()    打印输出 内存相关:   

hash()    获取到对象的哈希值(int, str, bool, tuple)   

id()        获取到对象的内存地址

文件操作相关:   

open()    用于口打开⼀一个文件, 创建一个文件句柄

模块相关:   

__import__()    用于动态加载类和函数

帮助:    help()    函数用于查看函数或模块用途的详细说明

调用相关:   

callable()    用于检查一个对象是否是可调用的. 如果返回true, object有可能调用失败, 但 如果返回false. 那调用绝对不会成功

查看内置属性:    

dir()    查看对象的内置属性, 方法. 访问的是对象中的__dir__()⽅方法 基础数据类型相关:    

数字相关:        

bool()  将给定的数据转换成bool值. 如果不给值. 返回false       

int()     将给定的数据转换成int值. 如果不给值, 返回0       

float()  将给定的数据转换成float值. 也就是⼩小数       

complex()  创建一个复数. 第一个参数为实部, 第二个参数为虚部. 或者第一个参数直接 用字符串来描述复数

 

进制转换:       

bin()    将给的参数转换成二进制       

otc()    将给的参数转换成八进制       

hex()    将给的参数转换成十六进制   

数学运算:       

abs()            返回绝对值       

divmode()     返回商和余数       

round()        四舍五入        

pow(a, b)    求a的b次幂, 如果有三个参数. 则求完次幂后对第三个数取余       

sum()    求和       

min()    求最小值       

max()    求最大值

和数据结构相关:   

列列表和元组:       

list()        将一个可迭代对象转换成列列表       

tuple()    将一个可迭代对象转换成元组       

reversed()    将一个序列列翻转, 返回翻转序列列的迭代器       

slice()    列表的切片

字符串相关:       

str()            将数据转化成字符串       

format()     与具体数据相关, 用于计算各种小数, 精算等

bytes()  把字符串转化成bytes类型

bytearray()    返回一个新字节数组. 这个数字里的元素是可变的, 并且每个元素的值得范 围是[0,256)

memoryview()  查看bytes在内存中的情况

ord()    输入字符找带字符编码的位置       

chr()    输入位置数字找出对应的字符       

ascii()  是ascii码中的返回该值 不是就返回\u...

repr()    返回一个对象的官方表示形式

数据集合:       

dict()    创建一个字典 

set()     创建一个集合       

frozenset()    创建一个冻结的集合. 冻结的集合不能进行添加和删除操作   

其他相关:        

len()    返回一个对象中的元素的个数       

sorted()    对可迭代对象进行排序操作

enumerate()    获取集合的枚举对象

all()      可迭代对象中全部是true, 结果才是true       

any()    可迭代对象中有一个是true, 结果就是true

zip()    函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然 后返回由这些元组成的开了表. 如果各个迭代器的元素个数不一致, 则返回列表长度与最短的对象相同.

filter()     过滤     

map()    会根据提供的函数对指定序列列做映射(lamda)

 

⼀. lamda匿名函数.

lambda表示的是匿名函数. 不需要用def来声明, 一句话就可以声明出一个函数

语法: 函数名 = lambda 参数: 返回值

注意: 1. 函数的参数可以有多个. 多个参数之间用逗号隔开

2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据

3. 返回值和正常的函数一样, 可以是任意数据类型
匿名函数并不是说一定没有名字. 这里前面的变量就是一个函数名. 说他是匿名原因是我们通 过__name__查看的时候是没有名字的. 统一都叫lambda. 在调用的时候没有什么特别之处. 像正常的函数调用即可

 

⼆. sorted()   

排序函数.     

语法: sorted(iterable, key=none, reverse=false)       

iterable: 可迭代对象       

key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函 数的参数. 根据函数运算的结果进行排序       

reverse: 是否是倒叙. true: 倒叙, false: 正序

 

三. filter()   

筛选函数    语法: filter(function. iterable)       

function: 用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后 根据function返回的true或者false来判断是否保留此项数据     

iterable: 可迭代对象 

 

四. map()    映射函数   

语法: map(function, iterable) 可以对可迭代对象中的每一个元素进行映射. 分别取执行 function   

计算列表中每个元素的平方 ,返回新列表 

 

五. 递归    在函数中调用函数本身. 就是递归  

在python中递归的深度最大到998 (经测试)

递归的应用:     我们可以使用递归来遍历各种树形结构, 比如我们的文件夹系统. 可以使用递归来遍历该 文件夹中的所有文件

 1 import os 
 2 def read(filepath, n):    
 3     files = os.listdir(filepath)    # 获取到当前文件夹中的所有文件    
 4     for fi in files:    # 遍历文件夹中的文件, 这里获取的只是本层文件名                    
 5          fi_d = os.path.join(filepath,fi)  # 加入文件夹 获取到文件夹+文件       
 6          if os.path.isdir(fi_d): # 如果该路径下的文件是⽂文件夹           
 7              print("\t"*n, fi)           
 8              read(fi_d, n+1)     # 继续进行相同的操作        
 9         else:            
10         print("\t"*n, fi)   # 递归出口. 最终在这里隐含着return
11 #递归遍历⽬目录下所有文件
12  read('../old/', 0)       

六. 二分查找   

二分查找. 每次能够排除掉一半的数据.  查找的效率非常高. 但是局限性比较大. 必须是有 序列才可以使⽤二分查找     要求: 查找的序列必须是有序列.