python3内置函数整理

python3内置函数
通过python中的部分内置函数可以直接访问对应的(同名且带双下划线)魔法方法。
既然对象是由属性和方法组成的。方法负责操作,那么用内置函数或者操作符操作数据的时候根本来说就是调用这些魔法方法。这些调用可能是间接,也可能是直接,比如len相当于调用__len__,加号相当于调用__add__方法,a[b]是调用__getitem__等等。而当我们用map、filter这些函数的时候,其实还是间接调用了__iterable__方法。通过内置函数和操作符调用方法像是一种简写。
部分有直接对应魔法方法的内置函数如下:
数值转换:abs bool complex int float hash bin/hex/oct(这三个使用特殊的__index__)
算数运算:divmod pow round
字符串/字节序列表示形式:str repr format bytes
(省略一些其他)

有一些内置函数是没有直接对应的魔法方法的,比如直接创建一个列表的list()等:
其他 any(iterable) all(iterable) callable max min sum

一、面向对象系统
对象创建
object,type,id

classmethod、staticmethod、property
类方法,静态方法,特性

对象属性相关
delattr、getattr、hasattr、setattr
delattr(object, name)

hasattr() 函数用于判断对象是否包含对应的属性。
hasattr(object, name)
如果对象有该属性返回 True,否则返回 False。

getattr() 函数用于返回一个对象属性值。
getattr(object, name[, default])
default – 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

setattr() 函数对应函数 getattr(),用于设置属性值,该属性若不存在则创建。
setattr(object, name, value)
无返回值

内省
dir、vars
dir()和vars()的区别就是
dir()只打印属性(属性,属性…),返回列表
而vars()则打印属性与属性的值(属性:属性值…),返回一个dict

继承:
super:钻石继承,class.__mro__可以显示类的MRO顺序
isinstance、issubclass
判断是否为实例关系,继承关系。

二、基本数据结构创建:
list、tuple、range (slice() 函数实现序列中的切片对象,主要用在切片操作函数里的参数传递。)
dict、set、frozenset (hash:作用于dict和set)
bytes、bytearray

字符编码:
码位Unicode是字符的标识,是一个十进制数字。编码是码位转换为字节序列的算法。
二进制序列类型:
用于处理二进制数据的核心内置类型是bytes和bytearray。它们由memoryview支持,它使用buffer protocol访问其他二进制对象的内存,而无需进行复制。
bytes和bytearray对象的各个元素是介于0-255之间的整数。
bytes将一个列表、字符串等转换成一个新的 bytes 对象,以字节流的形式转换成对应的ascii值。如果是多字节的字符就一个个字节展示出来。
bytearray() 是bytes的可变版本,可以通过切片改变其值。
memoryview
memoryview() 函数返回给定参数的内存视图(Momory view)。
所谓内存视图,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
memoryview可以操作(重点)内存中的二进制值,并且原有的内存字节不会随意移动。并通过cast函数转换成对应的对象。

unicode码的和字符互转:chr、ord
chr(int) 返回一个对应的unicode码。
ord以一个字符作为参数,返回对应的unicode码。ordinal

基础数据结构的统一应用,处理可迭代对象:
iter、next
iter(一个实现了iter方法的实例对象) 函数用来将可迭代对象生成迭代器。调用__iter__方法。大部分时候不用显式调用iter。
next() 返回迭代器的下一个项目。调用__next__方法

reversed、sorted、map、filter均返回一个迭代器:
reversed 函数返回一个反转的迭代器。reversed(seq) seq – 要转换的序列,可以是 tuple, string, list 或 range。
sorted(iterable[, function][, is_reverse]) 可以对所有可迭代的对象进行排序操作。排序默认都是从小到大排。
map(function, iterable, …) 返回一个迭代器return的值
filter(function, iterable) 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器。返回return不为false的值

enumerate(iterable, start=0) 返回一个迭代器
enumerate:enumerate([a,b,c],6) ## enumerate object [(6,a),(7,b),(8,c)]
zip(*iterables) 返回一个迭代器,聚合来自每个迭代器的元素。
zip:zip([1,2,3],[4,5,6]) ## zip object [(1, 4), (2, 5), (3, 6)]
拓展阅读:可迭代对象 vs 迭代器 vs 生成器
大部分容器都是可迭代的,但是还有其他一些对象也可以迭代,例如,文件对象以及管道对象等等

三、类型转换 类型转换在各种数据结构产生之后
转换成数字:
int() 函数用于将一个字符串或数字转换为整型。

转换成字符串格式:
bin(int) :将一个整数 int 或者长整数 long int 转换成二进制后字符串输出。
oct() 函数将一个整数转换成8进制字符串输出。
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

str、expr、ascii都有相似之处
尽管这两者都返回的字符串,但str返回对人类友好的形式,repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。
通常情况下obj==eval(repr(obj))这个等式是成立的。而str()函数这没有这个功能。
ascii() 函数类似 repr() 函数, 返回一个表示对象的字符串, 但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符。 基本没用。

六、数学计算相关,数学计算是一种特殊的操作方法
abs、complex、divmod、float、pow、round
(3, 1) = divmod(7, 2) 把除数和余数运算结果结合起来,返回一个包含商和余数的元组
float() 函数用于将整数和字符串转换成浮点数。
pow() 方法返回 (x的y次方) 的值。

max、min、sum

七、用于控制流程的逻辑判断
all、any、bool、callable
bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。bool 是 int 的子类。
callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。对于函数, 方法, lambda 函式, 类, 以及实现了 call 方法的类实例, 它都返回 True。
all:
注意:对all来说,空元组、空列表返回值为True

通用功能系列
len、help

变量声明、定义、作用域相关:
globals、locals、双下import

处理输入输出系列
format、input、print、open

六、虚拟机执行
compile、eval、exec
compile将source编译成代码或AST对象。代码对象可以由exec()或eval()执行。source可以是普通字符串,字节字符串或AST对象。
compile(source, filename, mode[, flags[, dont_inherit]])
source – 字符串或者AST(Abstract Syntax Trees)对象。。
filename – 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
mode – 指定编译代码的种类。可以指定为 exec, eval, single。
flags – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
flags和dont_inherit是用来控制编译源码时的标志

eval 返回计算结果
eval(expression[, globals[, locals]])
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

exec 只执行,不返回计算结果
exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码或者code对象。
拓展阅读:Python3源码—Code对象与pyc文件
一般来说这三个用在元编程时。在Bottle的源码中就有。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值