重要函数(python自带、双下方法、加密)
反射、map、filter、sort和sorted、zip
base64、md5、sha1
base64、md5、sha1
一、python自带函数
反射(hashttr,getattr)
map
Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。
L = [1,2,3,4,] def pow2(x): return x*x list(map(pow2,L)) #结果:[1, 4, 9, 16]
filter
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
def is_odd(x): return x % 2 == 1 #然后,利用filter()过滤掉偶数: list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17])) #结果[1, 7, 9, 17]
sort和sorted
用List的成员函数sort进行排序,在本地进行排序,不返回副本;
用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变;
sorted(iterable, key=None, reverse=False)
参数说明:
iterable:是可迭代类型;
key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序;
reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。
返回值:有序列表
#列表按照其中每一个值的绝对值排序 l1 = [1,3,5,-2,-4,-6] l2 = sorted(l1,key=abs)
zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
>>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)] >>> zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)] >>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)]
二、加密函数
1.base64
Python内置的base64模块可以实现base64、base32、base16、base85、urlsafe_base64的编码解码,python 3.x通常输入输出都是二进制形式,2.x可以是字符串形式。
base64模块的base64编码、解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码。
import base64 s = 'hello, world' base64.b64encode(bytes(s, 'ascii')) b'aGVsbG8sIHdvcmxk' base64.b64decode(base64.b64encode(bytes(s, 'ascii'))) b'hello, world'
2.md5
Python2.x中有md5模块,此模块调用了hashlib模块,python3.x已中将md5取掉,直接通过调用hashlib模块来进行md5。Python2.x可以直接使用unicode字符,但3.x中必须使用二进制字节串。
import hashlib m = hashlib.md5() m.update(b'hello, world!') m.hexdigest() '3adbbad1791fbae3ec908894c4963870'
3.sha1
类似于MD5
import hashlib m = hashlib.sha1() m.update(b'hello, world!') m.hexdigest() '1f09d30c707d53f3d16c530dd73d70a6ce7596a9'
三、前端加密函数
1.base64
<script type="text/javascript"> $("#doBase64").click( function () { var test2Val = $("#test2").val(); var bas = new Base64(); //加密 var hash = bas.encode(test2Val); $("#enbase64").val(hash); //解密 var str = bas.decode(hash); $("#debase64").val(str); }); </script>
2.md5
<script type="text/javascript"> $("#doMd5").click( function () { var test1Val = $("#test1").val(); var hash = hex_md5(test1Val); $("#md5").val(hash); }); </script>
3.sha1
<script type="text/javascript"> $("#doSha1").click( function () { var test3Val = $("#test3").val(); var hash = hex_sha1(test3Val); $("#sha1").val(hash); }); </script>