编程解决的问题属于特定领域(域),如: 银行系统需描述交易、利率 Web应用需定义路由、模板、响应 虽可用通用编程语言(GPL如Python/Java)解决,但代码冗长重复。因此引入DSL(领域特定语言)。 DSL——领域特定语言 DSL是专用于特定领域的编程或规范语言,区别于GPL(Python/C++/Java)。分两类: 外部DSL:全新语言,自有语法编译器 内部DSL(嵌入式DSL):宿主语言内构建,复用其语法构造 外部DSL 数据库用SQL替代手写循环扫描: 10; 网页设计用HTML替代手动拼串定位: <h1>Welcome To Tutorialspoint
内存泄漏指程序错误管理内存分配,导致可用内存减少,潜在引起程序变慢或崩溃。Python虽由解释器自动管理内存,但内存泄漏仍可能发生,尤其在长运行应用中。诊断修复内存泄漏需理解内存分配机制、识别问题区域、应用适当方案。 Python内存泄漏常见原因 1. 未释放引用 对象不再需要但仍被引用,无法释放导致泄漏: def create_list(): my_list = [1] * (10**6) return my_list my_list = create_list() # my_list未清理或重新赋值,持续占用内存 print(my_list) 2. 循环引用 循环引用可能导
Python中元编程指编写感知自身并可操纵自身的代码。元类是Python元编程利器,允许自定义类创建过程与行为。通过元类实现动态代码生成与反射,构建更灵活高效程序。 Python元编程涉及装饰器与元类。本教程聚焦元类元编程,探索动态代码生成与反射。 定义元类 元类提供高级特性,如__prepare__()方法,允许自定义类体执行的命名空间。 __prepare__()在类体代码执行前调用,可初始化类命名空间,注入额外属性/方法。必须实现为classmethod。 示例:__prepare__()自定义命名空间 class MyMetaClass(type): @classmethod
线程间通信指Python多线程程序中线程间通信与同步。Python线程共享进程内存空间,可通过共享变量、对象及threading模块同步原语(锁、Event、Condition、Semaphore)交换数据协调活动。 本教程重点讲解Event和Condition对象实现线程间通信。 Event对象 Event对象管理内部标志状态,线程可等待或设置。提供方法控制标志,让线程基于共享条件同步。 标志初始为false,set()置true,clear()重置false,wait()阻塞至标志为true。 Event关键方法 is_set():标志为true返回True set():置标志true,
Python内置type()返回对象所属类。在Python中,类(内置或用户定义)均为type类的对象。 示例 class myclass: def __init__(self): self.myvar = 10 obj = myclass() print(int的类, type(int)) print(list的类, type(list)) print(dict的类, type(dict)) print(myclass的类, type(myclass)) print(obj的类, type(obj)) 输出: int的类 <class type> list
Python重命名与删除文件 Python用os模块内置函数重命名、删除文件,是文件系统管理核心操作。本教程分步讲解。 重命名文件 用os.rename()重命名,接受两参数:当前文件名、新文件名。 语法 os.rename(current_file_name, new_file_name) 参数 current_file_name —— 待重命名文件当前名 new_file_name —— 要赋予的新文件名 示例 import os current_name = oldfile.txt new_name = newfile.txt os.rename(current_name, new_
使用 C、C++ 或 Java 等编译语言编写的代码,可集成或导入到 Python 脚本中,称为“扩展”。 Python 扩展模块本质是普通 C 库。Unix 下通常为 .so(共享对象),Windows 下为 .dll(动态链接库)。 编写扩展的前置条件 需要 Python 头文件: Unix:安装开发包如 python2.5-dev。 Windows:二进制安装器自带头文件。 假设你具备良好 C/C++ 基础。 Python 扩展初探 扩展模块代码分四部分: 头文件 Python.h。 暴露给 Python 的 C 函数。 方法映射表:将 Python 可见函数名映射到 C 函数。
Python 提供多种 GUI 开发选项,主要包括: Tkinter:Python 标准自带的 Tk GUI 工具包接口,本章重点讲解。 wxPython:wxWindows 的开源 Python 接口,https://wxpython.org。 JPython:Python 移植到 Java,提供无缝访问本地 Java 类库,https://www.jython.org。 网上还有许多其他接口可供探索。 Tkinter 编程 Tkinter 是 Python 标准 GUI 库。Python 结合 Tkinter 提供快速简便的 GUI 应用创建方式。Tkinter 面向对象封装了 Tk
XML 是一种可移植的开源语言,让程序员开发的应用可被其他应用读取,跨操作系统和开发语言。 什么是 XML? 可扩展标记语言 (XML) 类似 HTML 或 SGML,由 W3C 推荐并作为开放标准发布。XML 适合跟踪中小量数据,无需 SQL 数据库支撑。 XML 解析器架构与 API Python 标准库提供处理 XML 的基本接口。两大主流 API: SAX (Simple API for XML):注册感兴趣事件的回调,解析器逐步读取文档。适合大文档或内存受限场景,边读边解析,不将整个文件加载内存。 DOM (Document Object Model) API:W3C 推荐,整个文
运行多线程类似同时运行多个程序,但优势在于: 同一进程内多线程共享数据空间,比独立进程更易共享信息和通信。 线程称轻量级进程,内存开销小,比进程廉价。 线程有开始、执行序列、结束。指令指针跟踪当前运行位置。线程可被抢占(中断),也可临时挂起(睡眠/让出)让其他线程运行。 启动新线程 调用 thread 模块的 start_new_thread 方法: thread.start_new_thread(function, args[, kwargs]) 该调用在 Linux 和 Windows 上快速高效创建线程。立即返回,子线程启动并用传入的 args 调用 function。函数返回则线程
简单邮件传输协议 (SMTP) 负责发送邮件并在邮件服务器间路由邮件。 Python 提供 smtplib 模块,定义了 SMTP 客户端会话对象,可用于向任何运行 SMTP 或 ESMTP 监听守护进程的互联网主机发送邮件。 创建 SMTP 对象 简单语法: import smtplib smtpObj = smtplib.SMTP([host[, port[, local_hostname]]]) 参数详情: host:运行 SMTP 服务器的主机,可指定 IP 或域名(如 tutorialspoint.com),可选。 port:提供 host 时需指定 SMTP 服务监听端口,通常为
Python 提供两级网络服务访问。低级可访问操作系统基础 Socket 支持,实现面向连接和无连接协议的客户端/服务端。高级库提供 FTP、HTTP 等应用层协议访问。 本章深入讲解网络编程核心概念 —— Socket 编程。 什么是 Socket? Socket 是双向通信通道的端点。可进程内通信、同机进程间通信、跨大陆进程间通信。 Socket 可基于多种通道类型实现:Unix 域套接字、TCP、UDP 等。socket 库提供常用传输的特定类及通用接口。 Socket 术语表: 序号术语及说明 1Domain(域):作为传输机制的协议族,常量如 AF_INET, PF_INET
Python 数据库接口标准是 Python DB-API,大多数 Python 数据库接口遵循该标准。 可根据应用选择合适数据库。Python Database API 支持多种数据库服务器: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 可用 Python 数据库接口列表见:Python Database Interfaces and APIs。每种数据库需单独下载对应 DB-API 模块。例如同时访问 Oracle 和 MySQL,需分别下载两者模块。 D
正则表达式 是一种特殊字符序列,帮助你匹配或查找字符串,使用专用语法构建模式。正则表达式在 UNIX 世界广泛应用。 Python re 模块提供完整的 Perl 风格正则表达式支持。编译或使用正则表达式出错时抛出 re.error 异常。 我们将介绍两个核心函数处理正则表达式。首先,正则表达式中某些字符有特殊含义,为避免混淆,我们使用原始字符串 rexpression。 match 函数 尝试将正则 pattern 与 string 的开头匹配,支持可选 flags。 语法 re.match(pattern, string, flags=0) 参数说明: 序号参数及说明 1patte
Python 从诞生起就是面向对象语言,创建和使用类、对象非常容易。本章助你精通 Python OOP 支持。 若无 OOP 经验,建议先阅读入门教程掌握基本概念。下面简要介绍 OOP 术语: OOP 术语概览 类:定义对象属性的用户原型,包含数据成员(类变量、实例变量)和方法,通过点号访问。 类变量:被所有实例共享,定义在类内方法外,使用频率低于实例变量。 数据成员:类变量或实例变量,保存与类及对象关联的数据。 函数重载:同一函数根据对象或参数类型表现不同行为。 实例变量:定义在方法内,仅属于当前实例。 继承:派生类获得基类特征。 实例:某个类的具体对象,如 Circle 类的对象 obj
Python 提供两大特性处理程序中的意外错误并增强调试能力: 异常处理:本教程重点讲解。Python 标准异常列表见下表。 断言:详见“Python 断言”教程。 标准异常列表 序号异常名及说明 1Exception:所有异常的基类。 2StopIteration:迭代器无下一个对象时抛出。 3SystemExit:sys.exit() 引发。 4StandardError:除 StopIteration 和 SystemExit 外所有内置异常的基类。 5ArithmeticError:数值计算错误基类。 6OverflowError:计算超出数值类型最大限制。 7Floati
本章涵盖 Python 中所有基本的 I/O 函数。更多函数请参考 Python 标准文档。 屏幕输出 最简单的输出方式是使用 print 语句,可传入零个或多个用逗号分隔的表达式。该函数将表达式转为字符串并写入标准输出: #!/usr/bin/python print(Python is really a great language,, isnt it?) 输出结果: Python is really a great language, isnt it? 键盘输入 Python 提供两个内置函数从标准输入(默认为键盘)读取一行文本: raw_input input raw_input
模块让你能够逻辑清晰地组织 Python 代码。将相关代码归入一个模块,能使代码更易理解、更易使用。模块本质上是一个拥有任意命名属性的 Python 对象,你可以绑定和引用这些属性。 简单来说,模块就是一个包含 Python 代码的文件。模块可以定义函数、类和变量,也可以包含可直接运行的代码。 示例 名为 aname 的模块,其代码通常位于名为 aname.py 的文件中。下面是一个简单的模块示例 support.py: def print_func(par): print(Hello : , par) return import 语句 你可以通过在另一个 Python 源文件
函数概述 函数是组织好、可复用的代码块,用于执行单一相关动能。函数提供更好的模块化和高度代码复用。 Python 提供许多内置函数如 print(),也可创建自己的函数,称为用户定义函数。 定义函数 定义函数提供所需功能。Python 定义函数的简单规则: 函数块以关键字 def 开始,后跟函数名和圆括号 (()) 输入参数/自变量放在括号内,也可在括号内定义参数 函数第一条语句可为可选文档字符串——函数的 docstring 每个函数内的代码块以冒号 (:) 开始并缩进 语句 return [表达式] 退出函数,可选将表达式返回调用者。无参数 re
什么是 Tick? 时间间隔以秒为单位的浮点数。特定时间点表示为自 1970 年 1 月 1 日 00:00:00 (纪元) 以来的秒数。 Python 提供流行的 time 模块处理时间及转换。函数 time.time() 返回自纪元以来的当前系统时间(tick)。 示例 在线演示 #!/usr/bin/python import time ticks = time.time() print Number of ticks since 12:00am, January 1, 1970:, ticks 输出类似: Number of ticks since 12:00am, January
Python