函数中高级 :闭包、进制转换、MD5加密

-----------------------------------函数相关--------------------------------------

函数中高级

  • 函数可以作为返回值

    def bar():
        def inner():
            print(123)
        return inner
    v = bar()
    v()
    
  • 闭包:为函数创建一块区域(内部变量,供自己使用),为他以后执行提供数据

    name = 'oldboy'
    def bar(name):
        def inner():
            print(name)
        return inner
    v1 = bar('yang')
    v2 = bar('chang')
    v1()
    v2()
    #输出结果为
    #yang
    #chang
    
  • 注意:函数是何时创建的

函数补充

  • lambda(匿名函数)

  • 在数据类型的方法中有无返回值

  • 无返回值

    • 列表

      v1  = [11,22,33]
      v1.append(99)
      
  • 仅有返回值

    • 字符串、字典

      #练习1,字符串
      v = 'alex'
      result = v.split('l')
      print(result)
      
      #练习2,字典
      v = {'k1':'v2'}
      result1 = v.get('k1')
      result2 = v.keys()
      print(result1,result2)
      
    • 有返回值+修改

      v = [11,22,33]
      result = v.pop()
      

------------------------------------内置函数--------------------------------------

编码相关

  • chr——将十进制数字转换成unicode编码中的对应字符

  • ord——根据字符在unicode编码中找到其中对应的十进制

    #生成随机字母
    import random
    data = []
    for i in range(6):
        v = random.randint(65,100)
        data.append(chr(v))
    print(''.join(data))
    

高级一点的函数

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

    #map函数与lambda函数并用
    v1 = [11,22,33,44]
    result = map(lambda x:x+100,v1)
    print(list(result))
    
  • filter,结构基本与map相同,但是主要用于筛选

    #filter与lambda、与升级的三元运算共用
    v1 = [11,22,'aa','bb',33,44]
    result = filter(lambda x:type(x)==int,v1)
    print(list(result))
    
  • ruduce,基本结构与map相同,但主要用于把函数弄到一块

    import functools
    v1 =[1,2,3,4,5,6]
    def func(x,y):
        return x*y
    result = functools.reduce(func,v1)
    print(result)
    

MD5加密函数

  • 可被MD5解密器解密
def funs(a):
   import hashlib
   obj = hashlib.md5()
   obj.update(a.encode('utf-8')) #注意encode,以及a后的.a为函数的参数
   result = obj.hexdigest()
   return(result)
v = funs("dyhgjf")
print(v)
  • 加盐,防止md5解密器解密

    def funs(a):
        import hashlib
        obj = hashlib.md5('hjafsdkada'.encode('utf-8'))#在括号里面加入任意字符串,来达到加密的效果
        obj.update(a.encode('utf-8'))
        result = obj.hexdigest()
        return(result)
    v = funs("1")
    print(v)
    
posted @ 2020-07-02 02:40  小杨的冥想课  阅读(211)  评论(0编辑  收藏  举报