• python基础知识(day11)


    day11

    今日内容

    • 函数中高级(闭包/高阶函数)

    • 内置函数

    • 内置模块(.py文件)

    内容回顾

    • 函数的基础概念

      • 函数基本结构

      • 参数

        • 定义函数时
          • def func(a1,a2):pass
          • def func(a1,a2=None):pass
          • def func(*args,**kwargs):pass
        • 调用函数
          • 位置参数在前,关键字参数在后
      • 函数小高级

        • 函数可以做变量
        • 函数可以做参数
        • Python中以函数为作用域
        • lambda表达式(匿名函数)
        • 内置函数

    内容详细

    1. 函数中高级

      1.1 函数可以做返回值

      函数是由谁创建的,作用域就从他那开始

      # 函数当返回值
      def func():
          print(123)
      def bar():
          return func
      v = bar()
      v()
      print(v)
      # 123
      <function func at 0x00000273959B1EA0>
      
      
      name = 'llk'
      def bar():
          name = 'hkq'
          def inner():
              print(name)
          return inner
      v = bar()
      v()
      print(v)
      # hkq 
      <function bar.<locals>.inner at 0x0000026B459CD488>
      
      name = 'llk'
      def bar(name):
          def inner():
              print(name)
          return inner
      v1 = bar('hkq') # {name = hkq,inner} # 闭包,为函数创建一块区域(内部变量供自己使用),提供数据
      v2 = bar('kq') # {name = kq,inner}
      v1()
      v2()
      print(v1)
      print(v2)
      '''
      hkq
      kq
      <function bar.<locals>.inner at 0x000001368AEAD488>
      <function bar.<locals>.inner at 0x000001368AEAD510>
      '''
      
      # 练习1
      name = 'llk'
      def base():
          print(name)
      def func():
          name = 'hkq'
          base()
      func()
      
      # llk
      
      # 闭包
      info = []
      def func(i):
          def inner():
              print(i)
          return inner
      for item in range(10):
          info.append(func(item))
      info[0]()
      info[1]()
      info[4]()
      

    1.2 闭包

    def func(name):
        def inner():
            print(name)
        return inner
    v1 = func('llk')
    v1()
    v2 = func('hkq')
    v2()
    

    1.3 高阶函数

    • 对函数进行赋值
    • 把函数当作参数传递
    • 把函数当作返回值

    2.内置函数

    • 编码相关

      • chr,将十进制数字转换成Unicode编码中对应的字符串

        v = chr(65)
        print(v)
        # A 
        
      • ord,根据字符在unicode编码中找到其对应的十进制

        a = ord('A')
        print(a)
        # 65
        
        # 生成随机验证码
        import random
        def get_random_code(length=6):
            data = []
            for i in range(length):
                v = random.randint(65,90)
                data.append(chr(v))
            return ''.join(data)
        code = get_random_code()
        print(code)
        
        • 导入模块

          import random
          v = random.randint(65,90)
          
        • map

          循环每个元素(第二个参数),然后让每个元素执行函数(第一个参数),将每个函数执行的结果保存到新的列表中,并返回

          # map函数
          v1 = [11,22,33]
          # 第一个参数必须是一个函数
          # 第二个参数必须是可迭代的类型(可被for循环)
          def func(arg):
              return arg + 100
          result = map(func,v1) # 将函数的返回值添加到空列表[]
          print(list(result))
          
          result = map(lambda  x :x + 100,v1)
          print(list(result))
          
      • filter

        过滤出想要的数据

        # filter()函数
        v2 = [11,22,'A','llk']
        def func(x):
            if type(x) == int:
                return True
            return False
        result = filter(func,v2)
        print(list(result))
        # [11,22]
        
      • reduce

        通过函数自定义规则,得到一个结果

        # reduce()函数
        import  functools
        v3 = [11,22,33]
        def func(x,y):
           return x+y
        result = functools.reduce(func,v3)
        print(result)
        # 66
        
    1. 模块

      将指定的字符串进行加密

      import hashlib
      
      def get_md5(data):
          obj = hashlib.md5()
          obj.update(data.encode('utf-8'))
          result = obj.hexdigest()
          return result
      va = get_md5('123')
      print(va)
      

      加盐

      import hashlib
      
      def get_md5(data):
          obj = hashlib.md5('skdsdhsdh'.encode('utf-8'))
          obj.update(data.encode('utf-8'))
          result = obj.hexdigest()
          return result
      va = get_md5('123')
      print(va)
      

      密码不显示

      import  getpass
      pwd = getpass.getpass('请输入密码: ')
      if pwd == '123':
          print('输入正确!')
      
  • 相关阅读:
    springMVC将处理的后的数据通过post方法传给页面时,可能会出现乱码问题,下面提出解决post乱码问题的方法
    div3的e题有点水呀
    鸽天的放鸽序列---牛客网
    CodeForces
    NOIP2009 压轴---最优贸易
    在加权无向图上求出一条从1号结点到N号结点的路径,使路径上第K+1大的边权尽量小
    好久没写题解了
    皇宫看守问题(带权树上独立集)
    树的最大独立集合问题
    拓扑排序+动态规划
  • 原文地址:https://www.cnblogs.com/lilangkui/p/12571914.html
Copyright © 2020-2023  润新知