zoukankan      html  css  js  c++  java
  • 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:
    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)
    pickle序列化模块 示例代码

    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)
    math 模块函数 示例代码

    day14

  • 相关阅读:
    带你剖析WebGis的世界奥秘----点和线的世界
    XML解析
    Java-工厂设计模式
    分享:软件包和文档
    启航,新开始
    docker容器网络通信原理分析(转)
    【好书分享】容器网络到kubernetes网络
    go语言接受者的选取
    go语言的unsafe包(转)
    protocol buffers生成go代码原理
  • 原文地址:https://www.cnblogs.com/reachos/p/12150492.html
Copyright © 2011-2022 走看看