zoukankan      html  css  js  c++  java
  • Python-Day9

    1. 知识回顾

      isinstance(object, class)   ---->   判断该对象是否是该类的实例

    s = 'cnskcsk'
    
    ret = isinstance(s, str)
    
    print(ret)
    
    #>>>>>>>>>>>>>>>
    True
    

      

      传入 列表 字典 集合 时,默认传入的是实参的引用地址,即可以修改实参

    def app(args):
        args.append('333')
        return args
    
    li = [11,22]
    ret = app(li)
    print(li)
    
    #>>>>>>>>>>>
    [11, 22, '333']
    

      一旦对形参进行赋值操作,就新开辟一块内存使args指向这块新开辟的,而实参不变

    def app(args):
        args = 'qweqweqwe'
        return args
    
    li = [11,22]
    ret = app(li)
    print(li)
    
    #>>>>>>>>>>>
    [11, 22]
    

      

    处理字典 列表等有两种方式:1改变自身  *2返回新建的变量*

    # def qu2(args):
    #     r = {}
    #     for key, value in args.items():
    #         if len(value) > 2:
    #             r[key] = value[0:2]
    #         else:
    #             r[key] = value
    #     return r
    #
    # l = {'k1': 'xascaasdx', 'k2': 'cf', 'k3': [11,22,33]}
    # print(qu2(l))
    
    >>>>>>>>>>>>>>>>>>>>>>>>>>两种方法
    
    def qu2(args):
        for key, value in args.items():
            if len(value) > 2:
                args[key] = value[0:2]
            else:
                args[key] = value
    
    l = {'k1': 'xascaasdx', 'k2': 'cf', 'k3': [11,22,33]}
    qu2(l)
    print(l)
    

      

    2. lambda表达式

      简易的表示函数

    def f1(a1, a2):
        return a1 + a2
    
    f2 = lambda a1, a2: a1 + a2
    
    r1 = f1(1, 2)
    r2 = f2(1, 2)
    
    print(r1)
    print(r2)
    
    #>>>>>>>>>
    3
    3

    3. 内置函数

      0 None "" [] () {} 为False , 其他为True

      abs() 取绝对值

      all()   循环参数,若每个元素都为True, 返回真

      any() 循环参数,只要有一个True, 返回True

      ascii()  去参数对象的类中寻找 __repr__() 方法, 执行获取返回值

      bin()  二进制

      oct() 八进制

      int() 十进制      ret = int('0b1010', base=2)   ---->    将二进制转为十进制

      hex()  十六进制

      bool() 判断真假,即将参数转为布尔值

      bytes()        字节

      bytearray()  字节数组,每一个元素为字节, 类似 字符串跟列表的关系

      chr()  接收一个十进制数,返回对应ASCII码的字符

      ord()  与 chr() 相反,接收一个字符,返回ASCII对应十进制数

      小例子:生成随机验证码

    import random
    
    temp = ''
    for i in range(4):
        num = random.randrange(65, 91) #65~90 A~Z
        ch = chr(num)
        temp += ch
    
    print(temp)   #随机生成四位验证码
    

      改进为 既包含数字 又包含字母的

    import random
    
    temp = ''
    for i in range(6):
        rd = random.randrange(0, 4)
        if rd == 1 or rd == 3:
            num1 = random.randrange(0, 10)
            temp += str(num1)
        else:
            num = random.randrange(65, 91)  # 65~90 A~Z
            ch = chr(num)
            temp += ch
    
    print(temp)   #随机生成6位验证码
    

      

      callable()   检测参数是否是可执行的

      compile()   把字符串编译成可执行代码,可以与exec()结合使用

      dir() 返回对象所在类里的所有方法

      help() 输出类的所有详细信息

      divmod()   divmod(a, b)   返回a/b的 商 和 余数 组成的元组,可以用在 分页 中

      eval()  执行一个字符串格式的表达式

    ret = eval('1 + 3 * 2')
    
    print(ret)
    
    #>>>>>>>>>>>
    
    7
    

      后面可以带字典指定字符串中的变量值

    ret = eval('a + 10', {'a':23})
    #后面带字典,指定变量的值
    print(ret)
    
    #>>>>>>>>>>>
    33
    

      exec()  执行字符串形式的代码,没有返回值  

    exec('for i in range(10): print(i)')
    
    #>>>>>>>>>
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    

      filter()      filter(函数名, 可迭代的对象)  循环取后者的元素,作为函数的参数,执行。若返回True, 保存该元素

            即 过滤出符合条件的元素

    def f1(args):
        if args > 22:
            return True
        else:
            return False
    
    ret = filter(f1, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #通过lambda表达式
    ret = filter(lambda x: x > 22, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #>>>>>>>>>>>
    
    <filter object at 0x00000238C7A7CE48>
    33
    44
    <filter object at 0x00000238C7A7CE80>
    33
    44
    

      map()   跟filter() 类似,不同在于 对每个元素做统一的处理

    def f1(args):
        return args + 100
    
    ret = map(f1, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #通过lambda表达式
    ret = map(lambda x: x + 100, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #>>>>>>>>>>>
    <map object at 0x000001BF2210CE48>
    111
    122
    133
    144
    <map object at 0x000001BF2210CE80>
    111
    122
    133
    144
    

      

    def f1(args):
        if args % 2 == 0:
            return args + 100
        else:
            return args
    
    ret = map(f1, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #通过lambda表达式
    ret = map(lambda x: x + 100 if x % 2 == 0 else x, [11, 22, 33, 44])
    
    print(ret)
    
    for i in ret:
        print(i)
    
    #>>>>>>>>>>>
    
    <map object at 0x000001FF537FCE48>
    11
    122
    33
    144
    <map object at 0x000001FF537FCE80>
    11
    122
    33
    144
    

      locals()  获取所有局部变量

      globals()   获取所有全局变量

    def f1():
        n1 = 123
        print(locals())
        print(globals())
    
    l = [11,22,33]
    
    f1()
    
    #>>>>>>>>>>>>>>>>>>>>>
    
    {'n1': 123}
    {'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001F7B1AEAA58>, 'f1': <function f1 at 0x000001F7B1BB10D0>, '__spec__': None, 'l': [11, 22, 33], '__file__': 'C:/Users/LiuKai/PycharmProjects/Fighting/main/src.py', '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__doc__': None, '__name__': '__main__', '__cached__': None}
    

      id() 内存地址

      hash() 返回其哈希值

      iter() 转为可迭代的对象,使用next()取值,每执行一次next()取下一个值

      max() min() 取最大值 最小值 sum() 求和

      pow() 指数运算 pow(2, 10) = 1024

      repr() 类似 ascii() , 不过 ascii() 遇到中文会转义

      reversed() 反转 需要在迭代(for循环)中取出元素

      round() 四舍五入

      zip() 把对应的元素组成一个元组作为一个元素

    l = [11, 22, 33, 44, 55]
    m = ['qq', 'ss', 'dd', 'dd']
    n = ['@@', '##', '$$', '%%']
    
    r = zip(l, m, n)
    
    for i in r:
        print(i)
    
    #>>>>>>>>>
    (11, 'qq', '@@')
    (22, 'ss', '##')
    (33, 'dd', '$$')
    (44, 'dd', '%%')
    

      __import__() 也是导入模块,r = __import__(random), 之后再用到时使用 r.randomrange() 相当于起了一个别名

      sorted() 排序顺序

      对数字来说,从小到大

      对字符串来说, 先数字,后字母字符,最后汉字

      

    l = [ '你好','11', 'yadlan', '1324', '23', '546', 'rruhvd', 'Ancskdna', 'Av s,', '好啊']
    
    r = sorted(l)
    
    print(r)
    for i in r:
        print(bytes(i, encoding = 'utf-8'))
        
    #>>>>>>>>>>>>
    ['11', '1324', '23', '546', 'Ancskdna', 'Av s,', 'rruhvd', 'yadlan', '你好', '好啊']
    b'11'
    b'1324'
    b'23'
    b'546'
    b'Ancskdna'
    b'Av s,'
    b'rruhvd'
    b'yadlan'
    b'xe4xbdxa0xe5xa5xbd'
    b'xe5xa5xbdxe5x95x8a'
    

        

    文件操作

      

  • 相关阅读:
    spring mvc给参数起别名
    聊聊分布式定时任务中间件架构及其实现--转
    Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
    终端安全工具 gartner 排名
    When Cyber Security Meets Machine Learning 机器学习 安全分析 对于安全领域的总结很有用 看未来演进方向
    DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网
    DNS隧道之DNS2TCP使用心得教程——是可以用来穿透qiang的,ubuntu下直接apt install dns2tcp
    DNS隧道工具汇总——补充,还有IP over DNS的工具NSTX、Iodine、DNSCat
    Data Mining and Machine Learning in Cybersecurity PDF
    ES failed to notify ClusterStateListener java.lang.IllegalStateException: environment is not locked
  • 原文地址:https://www.cnblogs.com/freelandun/p/6591745.html
Copyright © 2011-2022 走看看