1. 内置函数
# ### 内置函数 # abs 绝对值函数 res = abs(-10) print(res) # round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!) 奇进偶不进 res = round(13.56) res = round(4.5) res = round(5.5) res = round(4.53) res = round(4.9) print(res) # sum 计算一个序列得和 tup = (1,2,3,43,5,6,6) res = sum(tup) print(res) # max 获取一个序列里边的最大值 tup = (1,2,3,43,5,6,6) res = max(tup) print(res) # max的高阶函数使用 def func(n): # print(n) # 参数是一个个的元组 ('林明辉', 58) return n[1] # 33 58 99 -8 lst = [("常远",33),("林明辉",58),("李德亮",99),("李诗韵",-8)] res = max(lst,key=func) print(res) # min 获取一个序列里边的最小值 tup = (1,2,3,43,5,6,6) res = min(tup) print(res) # min的高阶函数使用 dic = {"任鹏伟":60,"宗永玲":59,"黄乐锡":90,"李诗韵":-7} def func(n): # print(n) # 参数是字典的键 return dic[n] # 通过键返回值 , 通过值排序,找出最小值对应的键 res = min(dic,key=func) print(res) # pow 计算某个数值的x次方 res = pow(2,3) """前两个数运算的值 在和第三个数取余""" res = pow(2,3,3) # res = pow(2,3,4) print(res) # range 产生指定范围数据的可迭代对象 for i in range(3): print(i) for i in range(1,5): print(i) for i in range(1,10,3): print(i) # bin 将10进制数据转化为二进制 res = bin(255) print(res) # oct 将10进制数据转化为八进制 res = oct(255) print(res) # hex 将10进制数据转化为16进制 res = hex(255) print(res) # chr 将ASCII编码转换为字符 res = chr(97) print(res) # ord 将字符转换为ASCII编码 res = ord("a") print(res) # eval 将字符串当作python代码执行 strvar = "print('我是大帅锅')" print(strvar) eval(strvar) # eval 有局限性,不能创建变量的 # strvar = "a=5" # eval(strvar) # exec 将字符串当作python代码执行(功能更强大) 谨慎使用,存在安全隐患 strvar = "a='文哥真帅!'" exec(strvar) print(a) """ # 复习 dic = globals() print(dic) dic["wangwen"] = "宇宙第一男人" print(wangwen) """ strvar = """ for i in range(5): print(i) """ exec(strvar) # repr 不转义字符输出字符串 strvar = "D: abc" res = repr(strvar) print(res) # input 接受输入字符串 # name = input("先森,你妈贵姓?") # print(name) # hash 生成哈希值 """ (1) 可以加密密码 (2) 哈希值可以校验文件 """ # 相同的字符串,无论哈希多少次,都是相同的哈希值 strvar1 = "abc" strvar2 = "abc" res1 = hash(strvar1) res2 = hash(strvar2) print(res1,res2) with open("ceshi1.txt",mode="r+",encoding="utf-8") as fp1 , open("ceshi2.txt",mode="r+",encoding="utf-8") as fp2: res = fp1.read() res2 = hash(res) res = fp2.read() res3 = hash(res) if res2 == res3 : print("两者文件内容相同") else: print("两者文件不相同")
2. pickle序列化模块
# ### pickle 序列化模块 """ 序列化: 把不能够直接存储到文件的数据变得可存储,这个过程就是序列化 反序列化:把存储的数据拿出来,恢复成原来的数据类型,这个过程就是反序列化 php: (了解) serialize 序列化 unserialize 反序列化 pickle 可以序列化所有的数据类型 """ import pickle # 文件当中,只能存储字符串 或 二进制字节流 ,其他不行 """ lst = [1,2,34,5] with open("ceshi.txt",mode="w",encoding="utf-8") as fp: fp.write(lst) """ # (1)容器类型数据可以序列化 lst = [1,2,34,5] #dumps 把任意对象序列化成一个bytes res = pickle.dumps(lst) print(res) #loads 把任意bytes反序列化成原来数据 lst = pickle.loads(res) print(lst,type(lst)) # (2)函数可以序列化 def func(): print("我是函数func") #dumps 把任意对象序列化成一个bytes res = pickle.dumps(func) print(res) #loads 把任意bytes反序列化成原来数据 func = pickle.loads(res) print(func,type(func)) func() # (3)迭代器可以序列化 it = iter(range(5)) # 序列化迭代器 res = pickle.dumps(it) # 反序列化恢复原来的数据类型 it2 = pickle.loads(res) print(it2) from collections import Iterator,Iterable res = isinstance(it2,Iterator) print(res) # 获取迭代器中的数据 for i in range(3): res = next(it2) print(res) for i in it2: print(i) # 方法一 #dump 把对象序列化后写入到file-like Object(即文件对象) lst = [1,2,3] with open("ceshi.txt",mode="wb") as fp: pickle.dump(lst,fp) #load 把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据 with open("ceshi.txt",mode="rb") as fp: res = pickle.load(fp) print(res,type(res)) # 方法二 # 用dumps 和 loads 对数据进行存储 lst = [1,2,3] # 写入 with open("ceshi4.txt",mode="wb") as fp: res = pickle.dumps(lst) fp.write(res) # 读取 with open("ceshi4.txt",mode="rb") as fp: res = fp.read() lst = pickle.loads(res) print(lst)
3. math 数学模块
# ### math 数学模块 import math #ceil() 向上取整操作 (对比内置round) res = math.ceil(4.1111) print(res) #floor() 向下取整操作 (对比内置round) res = math.floor(6.9999) print(res) #pow() 计算一个数值的N次方(结果为浮点数) (对比内置pow) res = math.pow(2,3) # res = math.pow(2,3,3) error math中pow方法只有2个参数; print(res) #sqrt() 开平方运算(结果浮点数) res = math.sqrt(9) print(res) #fabs() 计算一个数值的绝对值 (结果浮点数) (对比内置abs) res = math.fabs(-8) print(res) #modf() 将一个数值拆分为整数和小数两部分组成元组 res = math.modf(7.81) print(res) # (0.8099999999999996, 7.0) #copysign() 将参数第二个数值的正负号拷贝给第一个 (返回一个小数) res = math.copysign(-18,-9) print(res) #fsum() 将一个容器数据中的数据进行求和运算 (结果浮点数)(对比内置sum) lst = [1,2,3,45] res = math.fsum(lst) print(res) #圆周率常数 pi res = math.pi print(res)
day14