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'
    

        

    文件操作

      

  • 相关阅读:
    faked 一个用于 mock 后端 API 的轻量工具
    分享开源 Markdown 编辑器 Mditor 的「桌面版」
    一个 MVC 框架以 MVVM 之「魂」复活了!
    简单的内存缓存模块
    Node 多进程并发控制小模块
    Confman
    用 Nokitjs 解决前端开发中的跨域问题
    LEK分布式日志系统搭建
    hello world2
    hello world!
  • 原文地址:https://www.cnblogs.com/freelandun/p/6591745.html
Copyright © 2011-2022 走看看