首页 > 编程语言 >python内置函数 C

python内置函数 C

时间:2024-03-13 18:33:59浏览次数:20  
标签:__ 内置 函数 实例 python 字符串 complex 复数 print

python内置函数 C

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

C

名称描述
callable检查一个对象是否是可调用的。
chr将整数(表示Unicode码点)转换为对应的字符。
classmethod将一个方法转变为类方法。
compile将源代码字符串编译为字节码对象。
complex创建复数。
callable(object)

如果 object 参数是可调用的则返回 True,否则返回 False。 如果返回 True,调用仍可能失败,但如果返回 False,则调用 object 肯定不会成功。 请注意类是可调用的(调用类将返回一个新的实例);如果实例所属的类有 __call__() 方法则它就是可调用的。

在 3.2 版本加入: 这个函数一开始在 Python 3.0 被移除了,但在 Python 3.2 被重新加入。

# 定义一个普通的函数  
def my_function():  
    pass  
  
# 检查函数是否可调用  
print(callable(my_function))  # 输出: True  
  
# 定义一个类  
class MyClass:  
    def __call__(self):  
        print("Instance is called!")  
  
# 创建类的实例  
my_instance = MyClass()  
  
# 检查类的实例是否可调用  
print(callable(my_instance))  # 输出: True  
  
# 创建一个普通的对象(没有 __call__ 方法)  
my_object = object()  
  
# 检查对象是否可调用  
print(callable(my_object))  # 输出: False  
  
# 检查内置函数是否可调用  
print(callable(print))  # 输出: True  
  
# 检查字符串是否可调用  
print(callable("Hello"))  # 输出: False
chr(i)

返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 'a'chr(8364) 返回字符串 '€'。这是 ord() 的逆函数。

实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。

# 将Unicode码点65转换为字符'A'
print(chr(65))  # 输出: 'A'

# 将Unicode码点97转换为字符'a'
print(chr(97))  # 输出: 'a'

# 将Unicode码点32转换为空格字符
print(chr(32))  # 输出: ' '

# 也可以用于非ASCII字符
# 将Unicode码点20013转换为字符'中'(在中文中代表'中')
print(chr(20013))  # 输出: '中'
@classmethod

把一个方法封装成类方法。

类方法隐含的第一个参数就是类,就像实例方法接收实例作为参数一样。要声明一个类方法,按惯例请使用以下方案:

class C:
    @classmethod
    def f(cls, arg1, arg2): ...

@classmethod 这样的形式称为函数的 decorator – 详情参阅 函数定义

类方法的调用可以在类上进行 (例如 C.f()) 也可以在实例上进行 (例如 C().f())。 其所属类以外的类实例会被忽略。 如果类方法在其所属类的派生类上调用,则该派生类对象会被作为隐含的第一个参数被传入。

类方法与 C++ 或 Java 中的静态方法不同。 如果你需要后者,请参阅本节中的 staticmethod()。 有关类方法的更多信息,请参阅 标准类型层级结构

在 3.9 版本发生变更: 类方法现在可以包装其他 描述器 例如 property()

在 3.10 版本发生变更: 类方法现在继承了方法的属性( __module____name____qualname____doc____annotations__),并拥有一个新的 __wrapped__ 属性。

在 3.11 版本发生变更: 类方法不再可以包装其他 descriptors 例如 property()

class MyClass:  
    class_variable = "I am a class variable"  
  
    @classmethod  
    def print_class_variable(cls):  
        print(cls.class_variable)  
  
    @classmethod  
    def create_instance(cls, value):  
        return cls(value)  
  
    def __init__(self, value):  
        self.instance_variable = value  
  
    def print_instance_variable(self):  
        print(self.instance_variable)  
  
# 使用类方法打印类变量  
MyClass.print_class_variable()  # 输出: I am a class variable  
  
# 使用类方法创建类的实例  
instance = MyClass.create_instance(42)  
  
# 使用实例方法打印实例变量  
instance.print_instance_variable()  # 输出: 42

类方法的一个常见用途是工厂方法,用于创建类的不同实例或返回特定类型的对象。它们也常用于实现单例模式,确保一个类只有一个实例存在。

注意,尽管类方法可以在没有创建实例的情况下被调用,但它们仍然是通过类本身来调用的,而不是通过单独的函数。这意味着它们可以访问和修改类的状态,但不能直接访问实例的状态(除非通过实例对象本身)。

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

compile()是一个内置函数,用于将源代码字符串编译为字节码对象。这个字节码对象可以被Python虚拟机执行。compile()函数通常用于动态地创建和执行代码,或者用于实现更高级的编程模式,如元编程。

参数说明:

  • source:一个字符串或者AST(抽象语法树)对象,代表要编译的源代码。
  • filename:源代码的文件名,如果源代码不是从文件读取,可以是一个任意的字符串,通常使用<string>或者<module>
  • mode:指定编译代码的种类,可以是以下字符串之一:'exec'(表示一个模块、可执行语句或交互式命令的序列)、'eval'(表示一个单独的表达式)或'single'(表示单个交互式语句)。
  • flags:可选参数,用于修改编译器标志。
  • dont_inherit:如果为True,编译的代码不会继承当前的编译环境标志。
  • optimize:指定编译器的优化级别。

source 编译成代码或 AST 对象。代码对象可以被 exec()eval() 执行。source 可以是常规的字符串、字节字符串,或者 AST 对象。参见 ast 模块的文档了解如何使用 AST 对象。

filename 实参需要是代码读取的文件名;如果代码不需要从文件中读取,可以传入一些可辨识的值(经常会使用 '<string>')。

mode 实参指定了编译代码必须用的模式。如果 source 是语句序列,可以是 'exec';如果是单一表达式,可以是 'eval';如果是单个交互式语句,可以是 'single'。(在最后一种情况下,如果表达式执行结果不是 None 将会被打印出来。)

可选参数 flagsdont_inherit 控制应当激活哪个 编译器选项 以及应当允许哪个 future 特性。 如果两者都未提供 (或都为零) 则代码会应用与调用 compile() 的代码相同的旗标来编译。 如果给出了 flags 参数而未给出 dont_inherit (或者为零) 则会在无论如何都将被使用的旗标之外还会额外使用 flags 参数所指定的编译器选项和 future 语句。 如果 dont_inherit 为非零整数,则只使用 flags 参数 – 外围代码中的旗标 (future 特性和编译器选项) 会被忽略。

编译器选项和 future 语句是由比特位来指明的。 比特位可以通过一起按位 OR 来指明多个选项。 指明特定 future 特性所需的比特位可以在 __future__ 模块的 _Feature 实例的 compiler_flag 属性中找到。 编译器旗标 可以在 ast 模块中查找带有 PyCF_ 前缀的名称。

optimize 实参指定编译器的优化级别;默认值 -1 选择与解释器的 -O 选项相同的优化级别。显式级别为 0 (没有优化;__debug__ 为真)、1 (断言被删除, __debug__ 为假)或 2 (文档字符串也被删除)。

如果编译的源码不合法,此函数会触发 SyntaxError 异常;如果源码包含 null 字节,则会触发 ValueError 异常。

如果您想分析 Python 代码的 AST 表示,请参阅 ast.parse()

引发一个 审计事件 compile 附带参数 source, filename

备注:在 'single''eval' 模式编译多行代码字符串时,输入必须以至少一个换行符结尾。 这使 code 模块更容易检测语句的完整性。

警告:在将足够大或者足够复杂的字符串编译成 AST 对象时,Python 解释器有可能因为 Python AST 编译器的栈深度限制而崩溃。

在 3.2 版本发生变更: Windows 和 Mac 的换行符均可使用。而且在 'exec' 模式下的输入不必再以换行符结尾了。另增加了 optimize 参数。

在 3.5 版本发生变更: 之前 source 中包含 null 字节的话会触发 TypeError 异常。

在 3.8 版本加入: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT 现在可在旗标中传入以启用对最高层级 await, async forasync with 的支持。

# 编译一个简单的表达式  
expr_code = compile('2 + 2', '<string>', 'eval')
result = eval(expr_code)
print(result)  # 输出: 4  

# 编译一段可执行代码  
exec_code = compile('''  
def hello(name):  
    print(f'Hello, {name}!')  
hello('world')  
''', '<string>', 'exec')
exec(exec_code)  # 输出: Hello, world!  

# 编译一个交互式的代码块  
single_code = compile('name = "Alice"', '<string>', 'single')
exec(single_code)
print(name)  # 输出: Alice

compile()函数只是将源代码编译为字节码对象,并不会执行它。要执行编译后的代码,你需要使用exec()函数(对于'exec'模式)或eval()函数(对于'eval'模式)。

使用compile()函数时要特别小心,因为它允许执行动态生成的代码,这可能带来安全风险,特别是当代码来源不可控时。确保不要执行来自不受信任源的编译代码。

complex(real=0, imag=0)

class complex(real=0, imag=0)

class complex(string)

返回值为 real + *imag**1j 的复数,或将字符串或数字转换为复数。如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 intfloat 一样进行数值转换。如果两个实参都省略,则返回 0j

对于一个普通 Python 对象 xcomplex(x) 会委托给 x.__complex__()。 如果 __complex__() 未定义则将回退至 __float__()。 如果 __float__() 未定义则将回退至 __index__()

备注:当从字符串转换时,字符串在 +- 的周围必须不能有空格。例如 complex('1+2j') 是合法的,但 complex('1 + 2j') 会触发 ValueError 异常。

数字类型 — int, float, complex 描述了复数类型。

在 3.6 版本发生变更: 您可以使用下划线将代码文字中的数字进行分组。

在 3.8 版本发生变更: 如果 __complex__()__float__() 均未定义则回退至 __index__()

complex()是一个内置函数,用于创建复数。复数是包含实部和虚部的数字,通常用于表示在二维平面上的点,或在某些数学和科学计算中。

complex()函数可以接受多种形式的参数来创建复数:

  1. 两个参数,分别表示复数的实部和虚部:

    c = complex(real, imag)
    

    其中real是实部,imag是虚部。

  2. 一个字符串,表示复数的形式(如'3+4j'):

    c = complex('3+4j')
    

    这里的'j'表示虚数单位,相当于数学中的i

    # 使用两个参数创建复数
    c1 = complex(3, 4)
    print(c1)  # 输出: (3+4j)
    
    # 使用字符串创建复数
    c2 = complex('2-3j')
    print(c2)  # 输出: (2-3j)
    
    # 访问复数的实部和虚部
    real_part = c1.real
    imag_part = c1.imag
    print(real_part)  # 输出: 3.0
    print(imag_part)  # 输出: 4.0
    
    # 复数的运算
    c3 = c1 + c2  # 加法
    c4 = c1 * c2  # 乘法
    print(c3)  # 输出: (5+1j)
    print(c4)  # 输出: (18-1j)
    

    在复数的表示中,jJ被用作虚数单位的标识。当你使用complex()函数时,可以传递一个包含这两个字符的字符串来创建复数。如果传递的字符串格式不正确(例如,没有包含jJ),则会引发ValueError

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

标签:__,内置,函数,实例,python,字符串,complex,复数,print
From: https://blog.csdn.net/dc1120/article/details/136687854

相关文章

  • Java Number类包含的函数,不要再重复造轮子了
    abs()、acos()、asin()、atan()、atan2()、ceil()、compareTo()、cos()、equals()、exp()、floor()、log()、max()、min()、parseInt()、pow()、random()、rint()、round()、sin()、sqrt()、tan()、toDegrees()、toRadians()、toString()、valueOf()、xxxValue()abs():功能......
  • python内置函数 A
    python内置函数APython解释器内置了很多函数和类型,任何时候都能使用。A名称描述abs返回一个数的绝对值。aiter返回对象的异步迭代器。all所有元素均为真值(或可迭代对象为空)则返回True。anext获取异步迭代器中的下一个异步项。any任一元素为真值则返回True。ascii返......
  • java中string类型常用的37个函数
    java中string类型常用的37个函数—无极低码intindexOf(intch,intfromIndex)、intindexOf(intch)、intindexOf(Stringstr,intfromIndex)、intindexOf(Stringstr)、intlastIndexOf(intch,intfromIndex)、intlastIndexOf(intch)、intlastIndexOf(Strin......
  • Python 内置模块及实例
    Python有许多内置模块,这些模块提供了各种功能,如数学运算、文件操作、日期和时间处理、数据压缩等。以下是一些常用内置模块及其简单实例:math-提供数学函数和常量。实例:importmathprint(math.sqrt(16))#输出:4.0print(math.pi)#输出:3.1415926535897......
  • L2-033 简单计算器(Python)
    作者 陈越单位 浙江大学本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1​ 中弹......
  • Python 函数的参数传递 *args和 **kwargs
    知识点:在函数调用时,*会以单个元素的形式解包一个元祖,使其成为独立的参数。在函数调用时,**会以键/值对的形式解包一个字典,使其成为独立的关键字参数。 deff(a,*args):print(args)f(1,2,3,4)​```输出为:(2,3,4)​```虽然传入1,2,3,4,但是解包为(1),(2,3,4),其中a是1......
  • 【分享】记一次项目迁移(docker java | docker python)
    项目:前端Vue3,后端Python+Java,数据库Redis+MySQL原先部署在centos7里面的,使用的宝塔面板部署的,还算方便。但是服务器要到期了,要将项目迁移到另外一台服务器。另外一台服务器是opencloudos+1plane本来想构建一个jdk1.8+python3.12+Nodejs环境的镜像奈何本人没学过docker,操作起......
  • C++纯虚函数和抽象类
    在C++中,可以将虚函数声明为纯虚函数,语法格式为:virtual返回值类型函数名(函数参数)=0;纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”。包含纯虚函数的类称......
  • python面试题
    1、字符串最后一个单词的长度importsysstr=input()    //输入字符串strarr=str.split("")//以空格分割字符串并将结果存入数组arrn=len(arr)-1  //获取数组最后一个元素的索引print(len(arr[n])) //打印最后一个元素arr[n]的长度即为最后一个......
  • 【DL经典回顾】激活函数大汇总列表(持续更新中...)
    激活函数大汇总列表(持续更新中…)欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不可或缺的角色,它们决定着神经元的输出,并且影响着网络的学习能力与表现力。鉴于激活函数的重要性和多样性,我们将通过一系列博客详细介绍......