资讯专栏INFORMATION COLUMN

Python标准库---6、内置函数(P-K-R-S-T-U)

lastSeries / 2384人阅读

摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回一个新的对象,可以选择带有从获取的元素。推荐使用内置函数来检测对象的类型,因为它会考虑子类的情况。上一篇文章标准库内置函数下一篇文章标准库内置函数

上一篇文章:Python标准库---5、内置函数(P-K-R)
下一篇文章:Python标准库---7、内置函数(V-W-X-Y-Z)
内置函数:

57. class set([iterable])
返回一个新的 set 对象,可以选择带有从 iterable 获取的元素。 set 是一个内置类型。 请查看 set 和 集合类型 --- set, frozenset 获取关于这个类的文档。

有关其他容器请参看内置的 frozenset, list, tuple 和 dict 类,以及 collections 模块。

58. setattr(object, name, value)
此函数与 getattr() 两相对应。 其参数为一个对象、一个字符串和一个任意值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对象允许这种操作。 例如,setattr(x, "foobar", 123) 等价于 x.foobar = 123。
59. class slice(stop)

class slice(start, stop[, step])

返回一个表示由 range(start, stop, step) 所指定索引集的 slice 对象。 其中 start 和 step 参数默认为 None。 切片对象具有仅会返回对应参数值(或其默认值)的只读数据属性 start, stop 和 step。 它们没有其他的显式功能;不过它们会被 NumPy 以及其他第三方扩展所使用。 切片对象也会在使用扩展索引语法时被生成。 例如: a[start:stop:step] 或 a[start:stop, i]。 请参阅 itertools.islice() 了解返回迭代器的一种替代版本。
60. sorted(iterable, *, key=None, reverse=False)
根据 iterable 中的项返回一个新的已排序列表。

具有两个可选参数,它们都必须指定为关键字参数。

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。

reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。

使用 functools.cmp_to_key() 可将老式的 cmp 函数转换为 key 函数。

内置的 sorted() 确保是稳定的。 如果一个排序确保不会改变比较结果相等的元素的相对顺序就称其为稳定的 --- 这有利于进行多重排序(例如先按部门、再按薪级排序)。

有关排序示例和简要排序教程,请参阅 排序指南 。

61. @staticmethod
将方法转换为静态方法。

静态方法不会接收隐式的第一个参数。要声明一个静态方法,请使用此语法

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...
@staticmethod 这样的形式称为函数的 decorator -- 详情参阅 函数定义。
静态方法的调用可以在类上进行 (例如 C.f()) 也可以在实例上进行 (例如 C().f())。

Python中的静态方法与Java或C ++中的静态方法类似。另请参阅 classmethod() ,用于创建备用类构造函数的变体。

像所有装饰器一样,也可以像常规函数一样调用 staticmethod ,并对其结果执行某些操作。比如某些情况下需要从类主体引用函数并且您希望避免自动转换为实例方法。对于这些情况,请使用此语法:

class C:
    builtin_open = staticmethod(open)
想了解更多有关静态方法的信息,请参阅 标准类型层级结构 。
62. class str(object="")

class str(object=b"", encoding="utf-8", errors="strict")

返回一个 str 版本的 object 。有关详细信息,请参阅 str() 。

str 是内置字符串 class 。更多关于字符串的信息查看 文本序列类型 --- str。

63. sum(iterable[, start])
从 start 开始自左向右对 iterable 中的项求和并返回总计值。 start 默认为 0。 iterable 的项通常为数字,开始值则不允许为字符串。

对某些用例来说,存在 sum() 的更好替代。 拼接字符串序列的更好更快方式是调用 "".join(sequence)。 要以扩展精度对浮点值求和,请参阅 math.fsum()。 要拼接一系列可迭代对象,请考虑使用 itertools.chain()。

64. super([type[, object-or-type]])
返回一个代理对象,它会将方法调用委托给 type 指定的父类或兄弟类。 这对于访问已在类中被重载的继承方法很有用。 搜索顺序与 getattr() 所使用的相同,只是 type 指定的类型本身会被跳过。

type 的 mro 属性列出了 getattr() 和 super() 所使用的方法解析顺序。 该属性是动态的,可以在继承层级结构更新的时候任意改变。

如果省略第二个参数,则返回的超类对象是未绑定的。 如果第二个参数为一个对象,则 isinstance(obj, type) 必须为真值。 如果第二个参数为一个类型,则 issubclass(type2, type) 必须为真值(这适用于类方法)。

super 有两个典型用例。

在具有单继承的类层级结构中,super 可用来引用父类而不必显式地指定它们的名称,从而令代码更易维护。 这种用法与其他编程语言中 super 的用法非常相似。

第二个用例是在动态执行环境中支持协作多重继承。 此用例为 Python 所独有,在静态编译语言或仅支持单继承的语言中是不存在的。 这使得实现“菱形图”成为可能,在这时会有多个基类实现相同的方法。 好的设计强制要求这种方法在每个情况下具有相同的调用签名(因为调用顺序是在运行时确定的,也因为该顺序要适应类层级结构的更改,还因为该顺序可能包含在运行时之前未知的兄弟类)。

对于以上两个用例,典型的超类调用看起来是这样的:
class C(B):
    def method(self, arg):
        super().method(arg)    
        # This does the same thing as:
        # super(C, self).method(arg)
请注意 super() 是作为显式加点属性查找的绑定过程的一部分来实现的,例如 super().__getitem__(name)。 它做到这一点是通过实现自己的 __getattribute__() 方法,这样就能以可预测的顺序搜索类,并且支持协作多重继承。 对应地,super() 在像 super()[name] 这样使用语句或操作符进行隐式查找时则未被定义。

还要注意的是,除了零个参数的形式以外,super() 并不限于在方法内部傅和。 两个参数的形式明确指定参数并进行相应的引用。 零个参数的形式仅适用于类定义内部,因为编译器需要填入必要的细节以正确地检索到被定义的类,还需要为普通访问当前实例。

对于有关如何使用 super() 来如何设计协作类的实用建议,请参阅 使用 super() 的指南。

65. tuple([iterable])
虽然被称为函数,但 tuple 实际上是一个不可变的序列类型,参见在 元组 与 序列类型 --- list, tuple, range 中的文档说明。
66. class type(object)

class type(name, bases, dict)

传入一个参数时,返回 object 的类型。 返回值是一个 type 对象,通常与 object.__class__ 所返回的对象相同。

推荐使用 isinstance() 内置函数来检测对象的类型,因为它会考虑子类的情况。

传入三个参数时,返回一个新的 type 对象。 这在本质上是 class 语句的一种动态形式。 name 字符串即类名并且会成为 name 属性;bases 元组列出基类并且会成为 bases 属性;而 dict 字典为包含类主体定义的命名空间并且会被复制到一个标准字典成为 dict 属性。 例如,下面两条语句会创建相同的 type 对象:

>>> class X:
...     a = 1
...
>>> X = type("X", (object,), dict(a=1))
另请参阅 类型对象。

在 3.6 版更改: type 的子类如果未重载 type.__new__,将不再能使用一个参数的形式来获取对象的类型。

上一篇文章:Python标准库---5、内置函数(P-K-R)
下一篇文章:Python标准库---7、内置函数(V-W-X-Y-Z)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43980.html

相关文章

  • Python标准---7、内置函数(V-W-X-Y-Z)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置常量内置函数返回模块类实例或任何其它具有属性的对象的属性。相当于函数会保证可迭代对象按从左至右的顺序被求值。上一篇文章标准库内置函数下一篇文章标准库内置常量 上一篇文章:Python标准库---6、内置函数(P-K-R-S-T-U)下一篇文章:Python标准库---8、内置常量 内置函数: showImg(https://segmentf...

    qiangdada 评论0 收藏0
  • Python标准---5、内置函数(P-K-R)

    摘要:上一篇文章标准库内置函数下一篇文章标准库内置函数内置函数返回的次幂如果存在,则对取余比直接计算更高效。是用于删除属性值的函数。上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---4、内置函数(L-M-N-O)下一篇文章:Python标准库---6、内置函数(P-K-R-S-T-U) 内置函数: showImg(https://segmentfault...

    gityuan 评论0 收藏0
  • Python标准---1、内置函数(A-B-C)

    摘要:内置函数返回一个数的绝对值。使用标准的真值测试过程来转换。因此,构造函数的实参和相同。实参的合法范围是到进制表示是。数字类型描述了复数类型。上一篇文章标准库简介下一篇文章标准库内置函数 上一篇文章:Python标准库----0、简介下一篇文章:Python标准库---1、内置函数(D-E-F) Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。以下按字母表顺序列出它...

    bingo 评论0 收藏0
  • Python标准---2、内置函数(D-E-F)

    摘要:如果对象允许,该函数将删除指定的属性。返回值为表达式求值的结果。语法错误将作为异常被报告。该函数返回值是。例如数字类型描述了浮点类型。将转换为控制的格式化表示。上一篇文章标准库内置函数下一篇文章标准库内置函数 上一篇文章:Python标准库---1、内置函数(A-B-C)下一篇文章:Python标准库---3、内置函数(G-H-I-J-K) 内置函数: showImg(https:/...

    Fourierr 评论0 收藏0
  • Python标准---0、简介

    摘要:下一篇文章标准库内置函数标准库语言参考描述了语言的具体语法和语义,这份库参考则介绍了与一同发行的标准库。这个库也包含了内置函数和异常不需要语句就可以在所有代码中使用的对象。下一篇文章标准库内置函数 下一篇文章:Python标准库---1、内置函数 Python 标准库 Python 语言参考 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标...

    mo0n1andin 评论0 收藏0

发表评论

0条评论

lastSeries

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<