python内置函数 P

python内置函数 P

Python 解释器内置了很多函数和类型,任何时候都能使用。

P

名称描述
pow计算一个数的幂。
print在控制台上输出文本或变量的值。
property创建属性(attribute)的内置函数。
pow(base, exp, mod=None)

pow() 是 Python 中的一个内置函数,用于计算一个数的幂。这个函数接受两个参数,第一个参数是基数,第二个参数是指数,并返回基数的指数次幂。

返回 baseexp 次幂;如果 mod 存在,则返回 baseexp 次幂对 mod 取余(比 pow(base, exp) % mod 更高效)。 两参数形式 pow(base, exp) 等价于乘方运算符: base**exp

参数必须为数值类型。 对于混用的操作数类型,则适用二元算术运算符的类型强制转换规则。 对于 int 操作数,结果具有与操作数相同的类型(转换后),除非第二个参数为负值;在这种情况下,所有参数将被转换为浮点数并输出浮点数结果。 例如,pow(10, 2) 返回 100,但 pow(10, -2) 返回 0.01。 对于 intfloat 类型的负基和一个非整数的指数,会产生一个复数作为结果。 例如, pow(-9, 0.5) 返回一个接近于 3j 的值。

对于 int 操作数 baseexp,如果给出 mod,则 mod 必须为整数类型并且 mod 必须不为零。 如果给出 mod 并且 exp 为负值,则 base 必须相对于 mod 不可整除。 在这种情况下,将会返回 pow(inv_base, -exp, mod),其中 inv_basebase 的倒数对 mod 取余。

下面的例子是 38 的倒数对 97 取余:

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

在 3.8 版本发生变更: 对于 int 操作数,三参数形式的 pow 现在允许第二个参数为负值,即可以计算倒数的余数。

在 3.8 版本发生变更: 允许关键字参数。 之前只支持位置参数。

# 计算 2 的 3 次方  
result = pow(2, 3)
print(result)  # 输出:8  

# 计算 5 的 0 次方  
result = pow(5, 0)
print(result)  # 输出:1,任何非零数的 0 次方都是 1

# 计算负数的偶数次方  
result = pow(-2, 2)
print(result)  # 输出:4,-2 的平方是 4  

# 计算负数的奇数次方  
result = pow(-2, 3)
print(result)  # 输出:-8,-2 的立方是 -8

# 计算 (2^3) mod 7
result = pow(2, 3, 7)
print(result)  # 输出:1,因为 2^3 = 8,而 8 mod 7 = 1
print(*objects, sep=’ ', end=‘\n’, file=None, flush=False)

objects 打印输出至 file 指定的文本流,以 sep 分隔并在末尾加上 endsependfileflush 必须以关键字参数的形式给出。

所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到流,以 sep 分隔并在末尾加上 endsepend 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则 print() 将只写入 end

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

输出缓冲通常由 file 确定。 但是,如果 flush 为真值,流将被强制刷新。

在 3.3 版本发生变更: 增加了 flush 关键字参数。

print("apple", "banana", "cherry", sep=', ')  
print("This is the first line.", end='')  
print("This is on the same line.")

# 输出结果:
apple, banana, cherry  
This is the first line.This is on the same line.
property(fget=None, fset=None, fdel=None, doc=None)

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

property()函数是用于创建属性(attribute)的内置函数。属性允许你将一个方法(通常是getter、setter和deleter方法)作为一个类的实例属性来访问。

返回 property 属性。

fget 是获取属性值的函数。 fset 是用于设置属性值的函数。 fdel 是用于删除属性值的函数。并且 doc 为属性对象创建文档字符串。

一个典型的用法是定义一个托管属性 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.")

如果 cC 的实例,c.x 将调用 getter,c.x = value 将调用 setter, del c.x 将调用 deleter。

如果给出,doc 将成为该 property 属性的文档字符串。 否则该 property 将拷贝 fget 的文档字符串(如果存在)。 这令使用 property() 作为 decorator 来创建只读的特征属性可以很容易地实现:

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

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

@property 装饰器会将 voltage() 方法转化为一个具有相同名称的只读属性 “getter”,并将 voltage 的文档字符串设为 “Get the current voltage.”

@getter

@setter

@deleter

特征属性对象具有 getter, setterdeleter 方法,它们可用作装饰器来创建该特征属性的副本,并将相应的访问函数设为所装饰的函数。 这最好是用一个例子来说明:

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, fsetfdel

在 3.5 版本发生变更: 特征属性对象的文档字符串现在是可写的。

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        """Getter for name."""
        return self._name

    @name.setter
    def name(self, value):
        """Setter for name."""
        if not isinstance(value, str):
            raise TypeError("Name must be a string.")
        self._name = value

    @name.deleter
    def name(self):
        """Deleter for name."""
        del self._name

# 使用示例
p = Person("Alice")
print(p.name)  # 输出: Alice

p.name = "Bob"  # 设置新的名字
print(p.name)  # 输出: Bob

del p.name  # 删除名字属性

在这个例子中,Person类有一个私有属性_name,和一个通过@property装饰器创建的公有属性namename属性有一个getter方法(用于读取属性的值),一个setter方法(用于设置属性的值),和一个deleter方法(用于删除属性)。

当你尝试访问p.name时,会调用getter方法;当你尝试设置p.name = "Bob"时,会调用setter方法;当你尝试删除del p.name时,会调用deleter方法。

参考:内置函数 — Python 3.12.2 文档

  • 40
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棠越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值