Python 基础函数 05(P ~ R)

Python解释器内置了许多始终可用的功能和类型。它们按字母顺序在此处列出。

Built-in Functions Built-in Functions
pow() print()
property() range()
repr() reversed()
round()

pow(base,exp [,mod ] )

将底数返回幂指数 ; 如果MOD存在时,返回基地到功率EXP,模MOD(更有效地比计算 )。两参数形式等效于使用幂运算符:。pow(base, exp) % modpow(base, exp)base**exp

参数必须具有数字类型。对于混合操作数类型,适用于二进制算术运算符的强制规则。对于int 操作数,除非第二个参数为负,否则结果与操作数的类型相同(强制后);否则,结果与操作数相同。在这种情况下,所有参数都将转换为float并传递float结果。例如,102 return 100,但是10-2返回0.01。

对于base和expint操作数,如果存在mod,则mod也必须是整数类型,并且mod必须非零。如果存在mod且 exp为负,则base必须相对mod而言为素数。在这种情况下, 返回inv_base是基本模mod的倒数 。pow(inv_base, -exp, mod)

这是计算38模97逆数的示例:

>>>
>>> pow(38, -1, mod=97)
23
>>> 23 * 38 % 97 == 1
True

在版本3.8中更改:对于int操作数,pow现在的三参数形式允许第二个参数为负,从而允许计算模逆。

在3.8版中更改:允许关键字参数。以前,仅支持位置参数。

print(* objects,sep =’’,end =’\ n’,file = sys.stdout,flush = False )

将对象打印到文本流文件中,并用sep分隔,然后用end分隔。 sep,end,file和flush(如果存在)必须作为关键字参数给出。

所有非关键字参数都像dos一样转换为字符串str(),并写入流中,以sep分隔,后跟end。无论九月 和年底必须是字符串; 它们也可以是None,表示使用默认值。如果没有给出对象,print()将只写 end。

的文件参数必须是与对象write(string)方法; 如果不存在或None,sys.stdout将使用。由于打印的参数将转换为文本字符串,print()因此不能与二进制模式文件对象一起使用。对于这些,请file.write(…)改用。

输出是否被缓冲通常由file确定,但如果 flush关键字参数为true,则将强制刷新流。

在版本3.3中进行了更改:添加了flush关键字参数。

class property(fget = None,fset = None,fdel = None,doc = None )

返回属性属性。

fget是用于获取属性值的函数。 fset是用于设置属性值的功能。fdel是用于删除属性值的函数。和文档创建的属性的文档字符串。

典型的用法是定义一个托管属性x:

class C:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, value):
        self._x = value

    def delx(self):
        del self._x

    x = property(getx, setx, delx, "I'm the 'x' property.")

如果c是C的实例,c.x则将调用getter, 将调用setter和Deleter。c.x = valuedel c.x

如果给定,doc将是属性属性的文档字符串。否则,该属性将复制fget的文档字符串(如果存在)。这使得有可能创造轻松使用只读属性property()作为装饰:

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

该@property装饰变成的voltage()方法变成“吸”与同名的只读属性,并将其设置的文档字符串的 电压为“获取当前的电压。”

属性对象具有getter,setter和deleter可用作装饰器的方法,这些方法可创建属性的副本,并将相应的访问器函数设置为装饰的函数。最好用一个例子解释一下:

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

此代码与第一个示例完全等效。确保为附加功能赋予与原始属性相同的名称(x在这种情况下)。

返回的属性对象也有属性fget,fset以及 fdel相对应的构造函数的参数。

在版本3.5中进行了更改:现在可以写入属性对象的文档字符串。

class range(stop)

class range(start, stop[, step])

实际上,range它是一个不变的序列类型,而不是一个函数,如Ranges和Sequence Types(列表,元组,范围)中所述。

repr(object)

返回一个包含可打印的对象表示形式的字符串。对于许多类型,这个函数试图返回一个字符串,将产生一个对象具有相同的价值传递给eval(),否则表示是用尖括号括起来的字符串,它包含的类型对象的名称加上额外的信息通常包括对象的名称和地址。类可以通过定义一个repr__()方法来控制这个函数为它的实例返回什么。

reversed(seq)

返回一个反向迭代器。seq必须是一个具有reversed__()方法的对象,或者支持序列协议(具有从0开始的整型参数的len__()方法和getitem__()方法)的对象。

round(number[, ndigits])

返回一个反向迭代器。seq必须是一个具有reversed__()方法的对象,或者支持序列协议(具有从0开始的整型参数的len__()方法和getitem__()方法)的对象。

对于支持round()的内置类型,将值四舍五入为最接近的10的- ndigit次方的倍数;如果两个倍数相等,则对偶数进行舍入(例如,round(0.5)和round(-0.5)都是0,round(1.5)是2)。任何整数对于ndigit(正数、零或负数)都是有效的。如果省略了ndigit或没有,则返回值为整数。否则返回值的类型与number相同。

对于一般的Python对象号,将其轮询委托给number._ round__。

注意,round()对于浮点数的行为可能令人吃惊:例如,round(2.675, 2)给出的是2.67,而不是预期的2.68。这不是一个错误:它是一个事实的结果,即大多数小数部分不能被准确地表示为浮点数。有关更多信息,请参见浮点运算:问题和限制。

发布了36 篇原创文章 · 获赞 0 · 访问量 614

猜你喜欢

转载自blog.csdn.net/Corollary/article/details/105424899