一.内置函数

  嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 作用是提高程序的执行效率,大多编程语言都有自己的内置函数。

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))