day14-Python运维开发基础(内置函数、pickle序列化模块、math数学模块)

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:\nabc"
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)
pickle序列化模块 示例代码

3. math 数学模块

day14

猜你喜欢

转载自www.cnblogs.com/reachos/p/12150492.html
今日推荐