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__()

用于动态加载类和函数 。

 

参考文献

 

posted @ 2021-07-19 18:09  老徐-lex  阅读(38)  评论(0编辑  收藏  举报