Python3 内置函数(五)
内置函数
setattr(object,nae,value)
次函数与getattr()项回应。
- object -- 对象。
- name -- 字符串,对象属性。
- value -- 属性值。
>>> a = A() >>> getattr(a,'bar') 1 >>> setattr(a,'bar',5) >>> a.bar 5 >>> setattr(b,'bar',10) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'b' is not defined >>> setattr(a,'temp',10) >>> a.temp 10
slice(start,stop[,step])
实现切片对象,主要用在切片操作函数里的参数传递。
>>> list_3 = range(100) >>> myslice = slice(20,50,2) >>> list_3[myslice] range(20, 50, 2) >>> myslice slice(20, 50, 2) >>> list_3 range(0, 100) >>> test=list_3[myslice] >>> test range(20, 50, 2) >>> for i in test: ... print(i) ... 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
sorted(iterable,*,ket=None,reverse=False)
根据 iterable 中的项返回一个新的已排序列表。
key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower
)。 默认值为 None
(直接比较元素)。
reverse 为一个布尔值。 如果设为 True
,则每个列表元素将按反向顺序比较进行排序。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
>>> list_1 = [100,222,233,45,67,876] >>> print(sorted(list_1))#默认升序 [45, 67, 100, 222, 233, 876] >>> print(sorted(list_1,key=lambda x:x*x)) [45, 67, 100, 222, 233, 876] >>> print(sorted(list_1,key=lambda x:x*-1)) #倒序 [876, 233, 222, 100, 67, 45]
staticmethod
装饰器,返回函数的静态方法
str(object=b'', encoding='utf-8', errors='strict')
返回object的字符串版本。如果为提供字符串则返回空字符串
如果encoding或error均未给出,str(object)返回object.__str__(),如果 encoding 或 errors 至少给出其中之一,则 object 应该是一个 bytes-like object(。 在此情况下,如果 object 是一个 bytes 对象,则 str(bytes, encoding, errors)
等价于bytes.edcod(encoding,errors) 否则的话,会在调用bytes.decode()之前获取缓冲区对象下层的 bytes 对象。
>>> dic = {'a':1,'b':2} >>> str(dic) "{'a': 1, 'b': 2}"
sum(iterable,/,start=0)
从 start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
>>> a = (1,2,3) >>> sum(a) 6
super([type[,object-or-type]])
用于调用父类(超类)的一个方法。
super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
tuple([iterale])
将可迭代系列(如列表)转换为元组。
>>>list1= ['1', '2', '3', '4'] >>> tuple1=tuple(list1) >>> tuple1 ('1', '2', '3', '4')
type(name,bases,dict,**kwds)
传入一个参数时,返回 object 的类型。
isinstance() 与 type() 区别:
-
type() 不会认为子类是一种父类类型,不考虑继承关系。
-
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
传入三个参数时,返回一个新的 type 对象。
传入三个参数时,返回一个新的 type 对象。 这在本质上是class语句的一种动态形式,name 字符串即类名并会成为name属性;bases 元组包含基类并会成为bases 属性;如果为空则会添加所有类的终极基类 object
。 dict 字典包含类主体的属性和方法定义;它在成为 dict属性之前可能会被拷贝或包装。 下面两条语句会创建相同的 type对象:
# 三个参数 >>> class X(object): ... a = 1 ... >>> X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X >>> X <class '__main__.X'>
vars()
返回对象object的属性和属性值的字典对象。
>>>print(vars()) {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
zip(*iterables)
创建一个聚合了来自每个可迭代对象中的元素的迭代器。
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
>>>a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) # 返回一个对象 >>> zipped <zip object at 0x103abc288> >>> list(zipped) # list() 转换为列表 [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,c)) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)] >>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式 >>> list(a1) [1, 2, 3] >>> list(a2) [4, 5, 6] >>>
__import__()
用于动态加载类和函数 。