1K+ 次浏览
'modulefinder' 模块中的 ModuleFinder 类可以确定某个脚本导入的模块集。此模块具有命令行界面和编程界面。为了演示功能,请使用以下脚本 #modfinder.py import hello try: import trianglebrowser import nomodule, mymodule except ImportError: pass命令行界面以下命令显示找到和未找到的模块列表。E:\python37>python -m modulefinder modfinder.py输出名称 文件 ---- ---- m __main__ modfinder.py m hello hello.py m math m trianglebrowser trianglebrowser.py 缺少模块: ? mymodule 从 __main__ 导入 ? nomodule 从 __main__ 导入编程界面ModuleFinder 类在 ... 阅读更多
176 次浏览
自动垃圾回收是 Python 的重要功能之一。垃圾回收机制试图回收程序不再使用的对象占用的内存。Python 使用引用计数机制进行垃圾回收。Python 解释器会跟踪对象被其他对象引用的次数。当对对象的引用被移除时,该对象的计数会递减。当引用计数变为零时,对象的内存会被回收。通常,此机制会自动执行。但是,如果程序中出现特定情况,则可以有意执行此操作。'gc' 模块 ... 阅读更多
2K+ 次浏览
警告与程序中的错误不同。如果遇到错误,Python 程序会立即终止。另一方面,警告并非致命。它显示某些消息,但程序继续执行。发出警告是为了提醒用户某些并非完全是异常的条件。通常,如果发现某些编程元素(如关键字/函数/类等)的某些已弃用的用法,则会出现警告。警告消息由 Python 标准库的 'warning' 模块中定义的 warn() 函数显示。警告实际上是内置类层次结构中 Exception 的子类。有许多内置的 Warning 子类。用户定义的子类也可以 ... 阅读更多
325 次浏览
Python 库中 struct 模块的规定在执行 C 类型结构体和 Python 字节对象之间的转换时非常有用。这可以通过模块级函数以及 struct 模块中定义的 Struct 类及其方法来实现。转换函数使用格式字符串。格式字符串中使用的字节顺序、大小和对齐方式由以下表格中的格式字符确定字符字节顺序大小对齐@本机本机本机=本机标准无big-endian标准无!网络(= big-endian)标准无下表显示用于表示 C 类型变量和相应 Python 类型的格式字符。格式C 类型Python 类型x填充字节无值c字符长度为 1 的字节b/B有符号/无符号字符整数?_Bool布尔值h/H短/无符号短整数i/I整型/无符号整型整数l/L长/无符号长整数f浮点数浮点数d双精度浮点数schar[]字节pchar[]字节Pvoid *整数以下 ... 阅读更多
11K+ 次浏览
如果一个类包含一个或多个抽象方法,则该类称为抽象类。抽象方法是已声明但没有实现的方法。抽象类不能被实例化,其抽象方法必须由其子类实现。抽象基类提供了一种在其他技术(如 hasattr())会很笨拙或微妙地错误(例如使用魔术方法)时定义接口的方法。ABC 引入了虚拟子类,这些子类没有继承自某个类,但仍然会被 isinstance() 和 issubclass() 函数识别。Python 中有许多内置的 ABC。用于数据的 ABC ... 阅读更多
使用 'zipimport' 模块可以从 ZIP 格式档案导入 Python 模块和包。此模块还允许 sys.path 的一项成为命名 ZIP 文件档案的字符串。ZIP 档案中可以存在任何文件,但只有 .py 和 .pyc 文件可用于导入。不允许对动态模块进行 ZIP 导入。此模块的功能通过首先构建 'newdir' 目录中文件的 zip 档案来解释。假定以下文件存在于 newdir 目录中 ['guess.py', 'hello.py', 'impzip.py', 'mytest.py', 'prime.py', 'prog.py', 'tmp.py']import sys, glob import zipfile files = glob.glob("*.py") print (files) ... 阅读更多
225 次浏览
Python 库中的 pyclbr 模块提取有关 Python 模块中定义的函数、类和方法的信息。信息是从 Python 源代码中提取的,而不是通过导入模块来提取的。此模块定义了 readmodule() 函数,该函数返回一个字典,将模块级类名映射到类描述符。该函数以模块名称作为参数。它可能是包中模块的名称。在这种情况下,path 是一个目录路径序列,预先添加到 sys.path,用于查找模块源代码。以下代码使用 readmodule() 函数来解析类和方法 ... 阅读更多
785 次浏览
Python 是一种基于解释器的语言。但是,当运行脚本(.py 扩展名)时,它会在内部将源代码编译为字节码,然后会自动删除字节码版本。当第一次导入模块(除了预编译的内置模块)时,其编译版本也会自动构建,但会以 .pyc 扩展名保存在 __pycache__ 文件夹中。随后再次调用导入同一模块不会重新编译模块,而是使用已构建的模块。但是,可以显式编译具有 .py 扩展名的 Python 脚本文件,而无需运行它。'py_compile' 模块包含用于此目的的 'compile()' 函数。名称 ... 阅读更多
5K+ 次浏览
Python 库中 'trace' 模块中的函数生成程序执行的跟踪以及带注释的语句覆盖率。它还具有通过生成调用者关系来列出运行期间调用的函数的函数。以下两个 Python 脚本用作示例来演示 trace 模块的功能。#myfunctions.py import math def area(x): a = math.pi*math.pow(x, 2) return a def factorial(x): if x==1: return 1 else: return x*factorial(x-1)#mymain.py import myfunctions def main(): x = 5 print ('area=', myfunctions.area(x)) ... 阅读更多
516 次浏览
Python 库中的 '_thread' 模块提供了一个低级接口,用于处理具有多个线程的轻量级进程,这些线程共享全局数据空间。为了进行同步,此模块中定义了简单的锁(也称为互斥量或二元信号量)。内置 'threading' 模块在此模块之上构建了更高级别的线程 API。start_new_thread()此模块级函数用于在当前进程中打开一个新线程。该函数以函数对象作为参数。此函数在成功创建新线程后被调用。此函数的范围对应于线程的生存期。线程 ... 阅读更多