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