python学习笔记之内置函数

昨日内容回顾

  1. 多层语法糖
@装饰器1
@装饰器2
@装饰器3
def 函数():
    
从下依次向上传参,然后从上往下依次开始运行
  1. 有参装饰器
def 扩展(参数):
    def 装饰器(实际函数):
        def 封包函数(*args,kwargs):
  1. 递归函数
概念:函数递归就是进行调用自己
递归深度:python中最大递归深度为1000
使用前提:有明确结束条件,每次执行离结果更近
  1. 算法之二分法
def get_num(target_num,l):  
    	if len(l) == 0:  # 长度为0
          print('没有该元素')  
          return 
            middle_index = len(l) // 2  # 整除2,获取中位数
        if target_num > l[middle_index]:  # 如果目标数大于中位数
          l_right = l[middle_index + 1:]  # 保存根据中位数切片的另一半列表
          get_num(target_num,l_right)  # 递归函数
        elif target_num < l[middle_index]:  # 如果目标数小于中位数
          l_left = l[:middle_index]  # 保存另一半列表
          get_num(target_num,l_left)  # 递归函数
        else:
          print('找到了')

python怎么用def构造带参函数 python3 def函数_递归函数

今日学习内容

三元表达式

只实用于二选一的时候 if判断
格式:值1 if 条件 else 值2
条件成立时使用值1
条件不成立使用值2
res = a if 1 == 1 else b
print(res) a
功能较为单一,了解即可

各种生产式

利用较为简化的代码,完成需要的功能

1. 列表生产式
功能:将列表中所有元素加上指定字符
name_list = ['eason', 'jojo', 'faiz']
res = [name + '666' for name in name_list]

还可以具备筛选能力
res = [name + '666' for name in name_list if name == 'jojo']

'''
列表生成式中允许出现for和if,不能出现else,逻辑不通,单独for 和 if 都可以结合else
'''
2. 字典生成式
功能:将两个列表制作成一个字典
list = ['name', 'age', 'pwd']
list1 = ['eason', '21', 'music']
res = {list[i]: list1[i] for i in range(list)}

也可根据检索值单个提取
res = {list[i]: list1[i] for i in range(list) if i == 0 }

元组没有生成器,他不配

(迭代器)

匿名函数

概念:不通过def来定义函数,而通过lambda关键字来定义的函数称为匿名函数。

lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。

格式:
lambda 参数,参数1,参数2:参数+参数1+参数2
普通函数

获取最大值

关键词:max
max(列表)
如果列表元素是纯数字,将获得最大的那个数
如果列表元素是英语字母,按照ASCII码中排序将字母转换数字进行对比,获得最大的那个
A~Z:65 - 90  a~z:97-122
        
返回字典V值
def index(k):
    return info[k]
print(max(info,key=index)) 

一行代码:
print(max(info, key=lambda key:info[key]))

python怎么用def构造带参函数 python3 def函数_python怎么用def构造带参函数_02

重要的重要内置函数

map映射

map映射
列表全部自增整形
res = map(lambda x: x + 10, l1)

zip拉链

zip拉链
将列表中的元素一一对应
zip多个列表,根据最短的那个列表来组合
res = zip()

filter过滤

filter过滤
根据条件筛选目标
def index(x):
    return x 目标条件
res = filter(index,列表)
写一个函数,利用函数去当做判断条件

reduce归总

reduce归总
res = reduce(lambda x, y: x + y, 列表)
如果有多个数,两位数相加,拿得到的结果,依次向后以两位数相加的形式得出总数
res = reduce(lambda x, y: x + y, 列表,数字)
最后如果加上数字,直接加上该数

常见内置函数

1.abs()  获取绝对值,(正负数都转换为正数)
2.all() 数据集中必须所有元素的布尔值都是True才能得到True结果
3.bin() 转换二进制
4.oct() 转换八进制
5.hex() 转换十六进制
6.bytes() 类型转换
7.callable() 判断当前对象是否可以加括号调用
8.chr() 根据ASCII码 将数字转换字符
9.ord() 根据ASCII码 将字符转换数字
10.dir() 查看该数据类型可以调用的内置方式,忽略带双下划线的数据
11.divmod() 分页器,超出增加页数,列出超出数
# print(divmod(250,25))  # (10, 0)  第一个参数是整数部分 第二个是余数部分
# print(divmod(251,25))  # (10, 1)
# print(divmod(249,25))  # (9, 24)
# def get_page_num(total_num,page_num):  # 后面django分页器使用
#     more,others = divmod(total_num, page_num)
#     if others:
#         more += 1
#     print('需要%s页'%more)
# get_page_num(1000,30)
12.enumerate() 枚举,给列表增加序号
13.eval() 低配版,识别python代码
14.any() 数据集中必须所有元素的布尔值只要有一个True就能得到True结果
15.exec() 高配版,识别python代码