python内置函数 C

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:@classmethoddef 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 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Task-balanced distillation for object detection用于

Task-balanced distillation for object detection用于目标检测的任务平衡蒸馏 摘要 主流的目标检测器通常由分类和回归两个子任务组成&#xff0c;由两个并行头部实现。这种经典的设计范式不可避免的导致分类得分和定位质量&#xff08;IOU&#xff09;之间的空间分布不一致…

【CTF web1】

CTF web 一、CTF web -PHP弱类型1、是否相等&#xff1f;2、转换规则: 二、CTF web -md5绕过1、若类型比较绕过2、null绕过3、碰撞绕过 三、习题 一、CTF web -PHP弱类型 1、是否相等&#xff1f; &#xff1a;在进行比较的时候&#xff0c;会先判断两种字符串的类型是否相等&…

深入探讨GPT系列与其他NLP架构的流行度差异及其应用解析

Transformer问答-1 为什么现在GPT系列的decoder-only那么流行&#xff0c;而其它两者:encoder-only和encoder-decoder架构不流行了呢? GPT系列&#xff08;特别是从GPT-3开始&#xff09;的流行并不意味着encoder-only或encoder-decoder架构不再流行或不再重要。事实上&…

2024.3.13-408学习笔记-C-数据在内存中的存储

1、整数型存储 整数型存储就是所有整型家族里的数据类型的存储方式&#xff0c;也就是说包含了字符类型的存储&#xff08;因为字符的操作符的返回值是ASCII码值&#xff0c;故实际上存储的是整数&#xff09;。 1.1、有符号整数 有符号整数包含char&#xff0c;short&#…

切面条-蓝桥杯?-Lua 中文代码解题第1题

切面条-蓝桥杯&#xff1f;-Lua 中文代码解题第1题 一根高筋拉面&#xff0c;中间切一刀&#xff0c;可以得到2根面条。 如果先对折1次&#xff0c;中间切一刀&#xff0c;可以得到3根面条。 如果连续对折2次&#xff0c;中间切一刀&#xff0c;可以得到5根面条。 那么&#xf…

【ollama】(7):使用Nvidia Jetson Nano设备,成功运行ollama,运行qwen:0.5b-chat,速度还可以,可以做创新项目了

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1Pj421o7W5/ 【ollama】&#xff08;7&#xff09;&#xff1a;使用Nvidia Jetson Nano设备&#xff0c;成功运行ollama&#xff0c;运行qwen:0.5b-chat&#xff0c;速度还可以&#xff0c;可以做创新项目了 2&#x…

vuex购物车案例

store/index.js // 导入vue import Vue from vue // 导入vuex import Vuex from vueximport cart from ./module/cartVue.use(Vuex)// 创建仓库store const store new Vuex.Store({strict: true,modules: {cart} })// 导出仓库 export default storestore/modules/cart impo…

Rust的async和await支持多线程运行吗?

Rust的async和await的异步机制并不是仅在单线程下实现的&#xff0c;它们可以在多线程环境中工作&#xff0c;从而利用多核CPU的并行计算优势。然而&#xff0c;异步编程的主要目标之一是避免不必要的线程切换开销&#xff0c;因此&#xff0c;在单线程上下文中&#xff0c;asy…

【Java】容器|Set、List、Map及常用API

目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合&#xff1a; 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…

C语言数据结构(7)——树、二叉树前言

欢迎来到博主的专栏——C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 树二叉树特殊二叉树满二叉树完全二叉树 完全二叉树的存储结构 树 树是一个非线性的数据结构&#xff0c;由N个结点构成的集合。 树的各个结点由一个根结点联系起来&#xff0c;这个根节点没有前驱…

Android中内存泄漏的检测,解决方案以及示例

单例模式使用不当引起的内存泄漏 1. 什么是内存泄漏? 安卓内存泄漏是因为长生命周期的对象持有了短生命周期的引用 导致本应该本回收的内存无法回收,导致内存的占用越来越大,最终可能导致程序崩溃或者系统资源不足等问题。 在Android开发中,内存泄漏是一个常见的问题,…

【leetcode热题】 分数到小数

给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以 字符串形式返回小数 。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 如果存在多个答案&#xff0c;只需返回 任意一个 。 对于所有给定的输入&#xff0c;保证 …

Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)

目录 1 Input Widgets简介 2 如何使用Input Widgets部件 2.1 Dial 组件-模拟车速表 2.2 QScrollBar组件-创建水平和垂直滚动条 2.3 QSlider组件-创建水平和垂直滑动条 2.4 QKeySequenceEdit组件-捕获键盘快捷键 Input Widgets部件部件较多&#xff0c;将分为三篇文章介绍…

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器)

DDR协议基础进阶&#xff08;三&#xff09;——&#xff08;基本功能、初始化、MR寄存器&#xff09; 一、DDR基本功能 DDR基本功能主要包括&#xff1a; 8-bit prefetch预取——8-bit&#xff0c;是指8位数据&#xff0c;即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…

sadtalker-api/

运行&#xff0c;点击网址&#xff0c;加载不出 需要保存代码后&#xff0c;点击网址 [Bug]: ModuleNotFoundError: No module named torchvision.transforms.functional_tensor torchvision 0.17 promblem Open ./venv/lib/python3.10/site-packages/basicsr/data/degradati…

python3GUI--qt仿暴风影音视频播放器By:PyQt5(附下载地址)

文章目录 一&#xff0e;前言二&#xff0e;环境1.开发环境2.打包环境3.运行环境 三&#xff0e;软件截图1.启动页2.视频播放3.音频播放4.其他1.托盘2.对话框 四&#xff0e;功能总览五&#xff0e;代码展示&心得1.UI设计2.如何防止卡顿3.如何自定义组件 五&#xff0e;思考…

CSS3DRenderer, CSS3DSprite API 使用案例demo

CSS3DRenderer, CSS3DSprite API 使用案例demo <!DOCTYPE html> <html><head><title>three.js css3d - sprites</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, user-scalabl…

VLC抓取m3u8视频

前言 最近想看一些网络视频&#xff0c;但是很多时候网页上是m3u8推流的&#xff0c;如果在线看&#xff0c;速度又慢&#xff0c;所以就想下载下来&#xff0c;就想到了VLC的推流&#xff0c;转换能力&#xff0c;查阅资料&#xff0c;加上实践&#xff0c;总结心得。 设置中…

RabbitMQ进阶

1.消息可靠性 消息从发送,到消费者接收,会经历多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: - 发送时丢失: - 生产者发送的消息未送达exchange - 消息到达exchange后未到达queue - MQ宕机,queue将消息丢失 - consumer接收到消息后未消费就宕机 …

【C语言】浮点型在内存中的存储

文章目录 例题引入剖析原因浮点型的二进制转换&#xff08;M&#xff09;正负号之分&#xff08;S&#xff09;科学记数法&#xff08;E&#xff09;关于 S E M 在内存中的存储存取浮点型时的情况讨论 例题解析整形存储为浮点型并输出浮点型存储为整形并输出 在我的上一篇博客中…