Python 解释器内置了很多函数和类型,我们可以在任何时候使用它们。根据官网以及自己所学知识进行了梳理,做了下面的思维导图,供自己学习和查阅。
官方文档链接:https://docs.python.org/zh-cn/3.7/library/functions.html#func-set
下面是对一些函数进行的补充。
内存相关
字典寻址方式:在查找 key
对应的 value
时,首先对 key
进行 hash 运算,把求得的值当做“key-value对” 的内存地址,在结构中按照此位置取“key-value对”进行比较,若键相等,则表示搜索成功。在存储“key-value对”的时候,依照相同的 hash 函数计算存储位置,并按此位置存放。
ord
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常
1 | >>>ord('a') |
chr
chr(i) 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符,i 可以是10进制也可以是16进制的形式的数字
1 | >>>print chr(0x30), chr(0x31), chr(0x61) # 十六进制 |
repr
将对象转化为供解释器读取的形式
1 | s = 'RUNOOB' |
%r 和 %s
%r用 rper() 方法处理对象;%s用str()方法处理对象。
1 | text = "I am %d years old." % 22 |
返回结果:
1 | I said: I am 22 years old.. |
enumerate
将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
1 | enumerate(sequence, [start=0]) |
其中 sequence 是 一个序列、迭代器或其他支持迭代对象,start 为下标起始位置。将返回 enumerate(枚举) 对象。
1 | 'Spring', 'Summer', 'Fall', 'Winter'] seasons = [ |
eval
eval (expression, globals=None, locals=None) ,将字符串 str 当成有效的表达式来求值并返回计算结果
1 | a=1 |
1 | message = "{'testhost': {'status': 'disabled', 'ip': '192.168.1.1'}}" |
安全性是 eval 最大的缺点,假设用户恶意输入,比如:
1 | __import__('os').system('dir') |
那么 eval()
之后,会发现当前文件夹文件都会展示到用户面前,如何避免这种情况?
- 自行写检查函数;
- 使用 ast.literal_eval:DOCUMENT
- 其它:Restricted “safe” eval(Python recipe)
zip
zip() 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。若各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 *
操作符可以将元组解压为列表。
1 | 1,2,3] a = [ |