函数中高级 :闭包、进制转换、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)
    记录学习的点点滴滴
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号