abs() all() any() ascii()

作者: import_hello | 来源:发表于2018-08-04 23:52 被阅读1次

    转载请注明出处:https://www.jianshu.com/u/5e6f798c903a

    abs

    abs(x)

    返回一个数的绝对值。
    如果实参(argument)是整数或浮点数,则会返回其绝对值。
    如果实参是复数(complex number),则会返回复数的模(magnitude)

    >>> abs(-3)
    3
    >>> abs(-3.4)
    3.4
    >>> abs(3+4j)
    5.0
    

    all

    all(iterable)

    如下代码与该内置函数等效:

    def all(iterable):
        for element in iterable:
            if not element:
                return False
        return True
    

    可见,如果可迭代(iterable)对象中所有元素的布尔值均为真,则返回 True
    注意,如果可迭代对象为空,也是返回 True

    any

    any(iterable)

    如下代码与该内置函数等效:

    def any(iterable):
        for element in iterable:
            if element:
                return True
        return False
    

    如果可迭代(iterable)对象中存在布尔值为真的元素,则返回 True
    注意,如果可迭代对象为空,也是返回 True

    ascii

    ascii(object)

    类似于 repr(),该函数也会返回一个用于描述 object 的字符串。与 repr() 的不同之处在于,ascii() 在获取 __repr__() 的返回值之后,会使用转义序列 (\x, \u , \U) 来表示其中的非 ASCII 码字符。ascii() 返回的字符串类似于 Python 2 中的 repr() 函数返回的字符串。

    class Cls:
        def __repr__(self):
            # ascii与repr都会使用__repr__,
            # 但ascii会转义其中的非ASCII字符
            return "调用__repr__"
    
        def __str__(self):
            # ascii不使用__str__
            return "调用__str__"
    
    
    a_cls = Cls()
    print("repr 的返回值:{0}".format(repr(a_cls)))
    print("ascii的返回值:{0}".format(ascii(a_cls)))
    

    输出

    repr 的返回值:调用__repr__
    ascii的返回值:\u8c03\u7528__repr__
    

    ascii() 如何转义非 ASCII 码字符?

    首先,补充一点有关 Unicode 的知识:每个 Unicode 字符都有一个指定的代码点(code point),在 Unicode 字符集中一般表示为 U+XXXX ,其中 XXXX 是由 4 个或更多个16进制数字表示的序列。在 Python 3 中:\u 转义序列用于插入码点范围在 U+0000 ~ U+FFFF 之间的 Unicode 字符。\U 转义序列用于插入码点范围在 U+10000 及以上的字符。

    ascii() 会将非 ASCII 码字符以 Unicode 转义序列表示:

    • \xhh 转义序列用于表示码点范围在U+007F ~ U+00FF 之间的 Unicode 字符。
    • \uxxxx 转义序列用于表示码点范围在U+0100 ~ U+FFFF 之间的 Unicode 字符。
    • \Uxxxxxxxx 转义序列用于表示码点范围在 U+10000 及以上的字符。

    另外, U+0000 ~ U+007E 对应 ASCII 码。

    示例代码:

    print(ascii('µ')) # U+007F ~ U+00FF
    print(ascii('鲸')) # U+0100 ~ U+FFFF 
    print(ascii("😊")) # U+10000
    

    输出:

    '\xb5'
    '\u9cb8'
    '\U0001f60a'
    

    最后在对比一下 repr()

    print(repr('µ'))
    print(repr('鲸'))
    print(repr("😊"))
    

    输出:

    'µ'
    '鲸'
    '😊'
    

    相关文章

      网友评论

        本文标题:abs() all() any() ascii()

        本文链接:https://www.haomeiwen.com/subject/yejmvftx.html