云南网站建设,企业信息化软件定制开发

专业提供昆明网站建设, 昆明软件开发, 云南网站建设,企业信息化软件定制开发服务免费咨询QQ932256355

博客园 首页 新随笔 联系 订阅 管理
  144 随笔 :: 4 文章 :: 3 评论 :: 925 阅读

Python 术语大揭秘:从基础到进阶的核心概念解析

在 Python 编程世界里,理解各种术语是深入学习和高效开发的基础。本文将带你系统梳理 Python 中的关键术语,涵盖从基础语法到高级特性的丰富内容,帮助你打通学习脉络,深入理解 Python 编程的本质。

Python 术语详解

基础语法相关术语

  1. 提示符>>>是 Python 交互模式下的默认提示符,在能交互执行代码的示例中常见;...则在输入带缩进代码块、匹配分隔符内或装饰器后作为交互式 Python 的默认提示符,同时它还是Ellipsis内置常量。在交互模式下输入代码时,>>>引导用户输入代码,而当输入多行结构(如函数定义、循环体)时,...提示符会持续出现,提示用户继续输入内容,直到完成整个代码块的编写。
  2. 表达式与语句:表达式是能求出某个值的语法单元,比如字面值、函数调用等;而语句是程序段的组成单位,像ifwhile等带有特定关键字的结构,赋值也属于语句,并非表达式。表达式侧重于求值,例如2 + 3这个表达式,计算结果为5;而语句侧重于执行某种操作,if语句用于条件判断,while语句用于循环执行代码块。
  3. 函数与方法:函数是可返回值的语句集合,能接受参数;在类内部定义的函数就是方法,当通过类的实例调用方法时,实例对象会作为方法的第一个参数(通常命名为self )。函数还涉及参数(调用时传入的值)和形参(函数定义中的命名实体)的概念,参数分为关键字参数和位置参数 ,形参则有位置或关键字、仅限位置、仅限关键字、可变位置、可变关键字这五种类型。
# 函数定义,包含位置或关键字形参
def func(foo, bar=None):
pass
# 仅限位置形参示例
def func_posonly(posonly1, posonly2, /, positional_or_keyword):
pass
# 仅限关键字形参示例
def func_kwonly(arg, *, kw_only1, kw_only2):
pass
# 可变位置形参示例
def func_var_positional(*args, **kwargs):
pass
  1. 装饰器:是返回另一个函数的函数,用于对函数进行变换,常见的如classmethod()staticmethod() ,使用@wrapper语法,本质是语法糖。装饰器可以在不修改原函数代码的情况下,为函数添加额外功能,如日志记录、性能监测等。
# 定义一个日志记录装饰器
def log(func):
def wrapper(*args, **kwargs):
print(f"开始执行{func.__name__}")
result = func(*args, **kwargs)
print(f"{func.__name__}执行结束")
return result
return wrapper
@log
def add(a, b):
return a + b
add(1, 2)
  1. lambda 表达式:由一个单独表达式构成的匿名内联函数,表达式会在调用时被求值。创建 lambda 函数的句法为lambda [parameters]: expression。lambda 表达式通常用于需要一个简单函数但又不想单独定义函数的场景,比如作为排序函数的键函数。
my_list = [(1, 'a'), (3, 'c'), (2, 'b')]
sorted_list = sorted(my_list, key=lambda x: x[0])
print(sorted_list)
  1. 语句块与缩进:Python 使用缩进来表示语句块,而不是像其他语言(如 C、Java)那样使用大括号。同一缩进级别的代码属于同一个语句块,这使得代码结构更加清晰易读。
if True:
print("这行代码在if语句块内")
print("这也是if语句块内的代码")
print("这行代码不在if语句块内")
  1. 条件语句与循环语句:条件语句主要有if - elif - else结构,用于根据不同条件执行不同代码块;循环语句包括for循环和while循环,for循环用于遍历可迭代对象,while循环则根据条件判断是否继续执行。
# if - elif - else示例
num = 10
if num > 10:
print("大于10")
elif num == 10:
print("等于10")
else:
print("小于10")
# for循环示例
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# while循环示例
count = 0
while count < 5:
print(count)
count += 1
  1. 模块与导入:模块是 Python 代码的组织单位,有独立命名空间,可通过import操作加载,模块可包含各种 Python 对象。导入机制包括导入路径(sys.path或上级包的__path__属性 )、查找器(元路径查找器和路径条目查找器 )、加载器等概念,查找器负责寻找模块的加载器,加载器则负责加载模块。
# 导入模块
import math
print(math.sqrt(16))
# 从模块中导入特定对象
from datetime import datetime
print(datetime.now())
  1. 包与命名空间:包是包含子模块或子包的特殊模块,分为常规包(包含__init__.py文件 )和命名空间包(无物理表示,无__init__.py文件 )。命名空间是存放变量的场所,有局部、全局和内置等不同层级,避免命名冲突,支持模块化开发。
# 假设存在一个包mypackage,其中有模块module1
from mypackage import module1
module1.my_function()
  1. 异常处理:Python 通过try - except - finally结构进行异常处理,当try块中的代码出现异常时,会跳转到对应的except块进行处理,finally块中的代码无论是否发生异常都会执行。
try:
result = 10 / 0
except ZeroDivisionError:
print("除数不能为0")
finally:
print("无论是否异常,都会执行我")
  1. 断言:使用assert语句进行断言,用于检查某个条件是否满足,如果不满足则抛出AssertionError异常。通常用于调试阶段,确保程序的正确性。
def divide(a, b):
assert b != 0, "除数不能为0"
return a / b
divide(10, 2)
  1. 上下文管理器:在with语句中通过定义__enter__()__exit__()方法来控制环境状态的对象。常用于文件操作、数据库连接等场景,确保资源的正确管理和释放。
# 使用上下文管理器操作文件
with open('test.txt', 'w') as f:
f.write("Hello, World!")
  1. 生成器表达式与列表推导式:生成器表达式是返回迭代器的紧凑表达式,如sum(i * i for i in range(10)) ;列表推导式用于快速生成满足条件的列表,[x for x in range(10) if x % 2 == 0]
# 生成器表达式示例
gen = (i * 2 for i in range(5))
for num in gen:
print(num)
# 列表推导式示例
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
  1. 字典推导式与集合推导式:字典推导式用于生成字典,{n: n ** 2 for n in range(10)} ;集合推导式用于生成集合,{c for c in 'abracadabra' if c not in 'abc'}
# 字典推导式示例
squares = {n: n ** 2 for n in range(10)}
print(squares)
# 集合推导式示例
unique_chars = {c for c in 'abracadabra' if c not in 'abc'}
print(unique_chars)
  1. 切片操作:通常只包含了特定 sequence 的一部分的对象。切片是通过使用下标标记来创建的,在[]中给出几个以冒号分隔的数字,例如variable_name[1:3:5] 。方括号(下标)标记在内部使用slice对象。
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 切片操作示例
sub_list = my_list[1:5:2]
print(sub_list)
  1. 字符串格式化:格式化字符串有多种方式,如使用%运算符、format()方法以及f - 字符串f - 字符串是带有'f''F'前缀的字符串字面值,是格式化字符串字面值的简写。
# 使用%运算符格式化字符串
name = "Alice"
age = 25
print("我的名字是 %s,年龄是 %d" % (name, age))
# 使用format()方法格式化字符串
print("我的名字是 {},年龄是 {}".format(name, age))
# 使用f - 字符串格式化字符串
print(f"我的名字是 {name},年龄是 {age}")
  1. 位运算:Python 支持按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)等位运算,常用于对二进制数据进行操作。
# 位运算示例
a = 5 # 二进制为 00000101
b = 3 # 二进制为 00000011
print(a & b) # 按位与,结果为 00000001,即 1
print(a | b) # 按位或,结果为 00000111,即 7
print(a ^ b) # 按位异或,结果为 00000110,即 6
print(~a) # 按位取反,结果为 11111010,即 -6
print(a << 2) # 左移2位,结果为 00010100,即 20
print(a >> 2) # 右移2位,结果为 00000001,即 1
  1. 运算符重载:Python 允许自定义类重载运算符,通过定义特殊方法(如__add__()用于重载加法运算符+),使自定义对象能够像内置类型一样使用运算符进行操作。
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __str__(self):
return f"({self.x}, {self.y})"
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2
print(v3)
  1. 函数递归:函数在其定义中调用自身的方式称为递归。递归常用于解决可以分解为相似子问题的问题,如计算阶乘、斐波那契数列等,但要注意设置递归终止条件,避免无限递归。
# 计算阶乘的递归函数
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
  1. 函数式编程概念:Python 支持部分函数式编程特性,如高阶函数(接受函数作为参数或返回函数的函数 )、map ()、filter () 和 reduce () 函数等。这些函数可以对可迭代对象进行高效处理。
# 使用map()函数对列表元素进行平方操作
my_list = [1, 2, 3, 4, 5]
squared_list = list(map(lambda x: x ** 2, my_list))
print(squared_list)
# 使用filter()函数过滤出列表中的偶数
even_list = list(filter(lambda x: x % 2 == 0, my_list))
print(even_list)
# 使用reduce()函数计算列表元素的乘积
from functools import reduce
product = reduce(lambda x, y: x * y, my_list)
print(product)
  1. 模块的__name__属性:每个模块都有__name__属性,当模块作为主程序运行时,__name__的值为__main__;当模块被导入时,__name__的值为模块的名称。利用这个属性可以控制模块代码的执行逻辑。
# module1.py
def my_function():
print("这是模块中的函数")
if __name__ == "__main__":
print("模块作为主程序运行")
my_function()
  1. 包的相对导入:在包内,可以使用相对导入来引用其他模块。相对导入使用from. import module_name(导入同级模块 )或from.. import module_name(导入上级包中的模块 )等语法,这种方式可以避免硬编码包名,提高代码的可维护性。
# 在包mypackage的module1.py中相对导入module2
from. import module2
module2.my_function()
  1. 元组解包:可以将元组中的元素解包赋值给多个变量,也可以使用*运算符进行部分解包,收集多余的元素。
# 元组解包示例
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)
# 部分解包示例
my_tuple = (1, 2, 3, 4, 5)
a, *rest, c = my_tuple
print(a, rest, c)
  1. 列表解包:类似于元组解包,列表也可以进行解包操作,将列表元素赋值给多个变量。
# 列表解包示例
my_list = [10, 20, 30]
x, y, z = my_list
print(x, y, z)
  1. 字典解包:在函数调用或变量赋值时,可以使用字典解包将字典的键值对作为参数传递或进行合并操作。
# 字典解包作为函数参数示例
def my_func(a, b, c):
print(a, b, c)
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_func(**my_dict)
# 字典解包进行合并示例
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
new_dict = {**dict1, **dict2}
print(new_dict)
  1. __future__模块from __future__ import <feature>语句用于指示编译器使用将在未来 Python 版本中成为标准的语法和语义来编译当前模块。通过导入此模块并对其变量求值,可以查看新特性的加入时间和成为默认特性的时间。
from __future__ import division
print(11 / 4) # 在Python 2中,/是整数除法,使用__future__模块可改变行为
  1. globals()locals()函数globals()函数返回全局命名空间的字典,locals()函数返回局部命名空间的字典。这两个函数在调试和动态访问命名空间中的变量时非常有用。
def my_function():
local_variable = "这是局部变量"
print(locals())
my_function()
print(globals())
  1. exec()eval()函数exec()函数用于执行动态生成的 Python 代码字符串,eval()函数用于计算表达式字符串的值并返回结果。这两个函数在处理动态代码和表达式求值时很有用,但使用时要注意安全性,避免执行恶意代码。
# 使用exec()执行代码字符串
code = "print('Hello, World!')"
exec(code)
# 使用eval()计算表达式字符串的值
result = eval("2 + 3 * 4")
print(result)
  1. zip()函数zip()函数用于将多个可迭代对象中的元素按索引配对,返回一个由元组组成的迭代器。常用于将多个列表或其他可迭代对象组合在一起进行处理。
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
zipped = zip(names, ages)
for name, age in zipped:
print(f"{name} 年龄是 {age}")
  1. enumerate()函数enumerate()函数用于遍历可迭代对象时同时获取元素的索引和值,返回一个由包含索引和元素的元组组成的迭代器。
fruits = ["apple

继续

  1. sorted()函数与列表的sort()方法sorted()是 Python 内置函数,可对任何可迭代对象进行排序并返回新的已排序列表,原可迭代对象不变;列表的sort()方法则是对列表本身进行排序,无返回值,直接修改原列表。
# sorted()函数示例
my_list = [3, 1, 4, 1, 5, 9]
new_sorted_list = sorted(my_list)
print(new_sorted_list) # 输出: [1, 1, 3, 4, 5, 9]
print(my_list) # 输出: [3, 1, 4, 1, 5, 9],原列表不变
# sort()方法示例
my_list.sort()
print(my_list) # 输出: [1, 1, 3, 4, 5, 9],原列表被修改
  1. reversed()函数与序列的__reversed__()方法reversed()函数用于返回一个反转的迭代器,适用于各种序列类型;一些序列类型(如列表、元组等)还实现了__reversed__()方法,作用与reversed()函数类似,但__reversed__()方法需要通过对象调用 。
# reversed()函数示例
my_list = [1, 2, 3, 4, 5]
reversed_iter = reversed(my_list)
print(list(reversed_iter)) # 输出: [5, 4, 3, 2, 1]
# __reversed__()方法示例(以列表为例)
my_list = [1, 2, 3, 4, 5]
reversed_list = list(my_list.__reversed__())
print(reversed_list) # 输出: [5, 4, 3, 2, 1]
  1. map()filter()reduce()函数对比map()函数对可迭代对象中的每个元素应用指定函数,并返回一个迭代器;filter()函数用于过滤可迭代对象,返回满足特定条件的元素组成的迭代器;reduce()函数(需从functools模块导入 )对可迭代对象进行累积计算 。
    函数 作用 示例
    map() 对可迭代对象每个元素应用函数 list(map(lambda x: x * 2, [1, 2, 3]))返回[2, 4, 6]
    filter() 过滤可迭代对象元素 list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4]))返回[2, 4]
    reduce() 对可迭代对象累积计算 from functools import reduce; reduce(lambda x, y: x + y, [1, 2, 3, 4])返回10
  2. 深拷贝与浅拷贝:浅拷贝是创建一个新对象,其内容是原对象元素的引用;深拷贝则递归地复制对象及其包含的所有嵌套对象,生成一个完全独立的副本。可使用copy模块的copy()函数进行浅拷贝,deepcopy()函数进行深拷贝。
import copy
# 浅拷贝示例
original_list = [[1, 2], [3, 4]]
shallow_copied_list = copy.copy(original_list)
original_list[0][0] = 99
print(shallow_copied_list) # 输出: [[99, 2], [3, 4]],内部列表元素引用相同
# 深拷贝示例
original_list = [[1, 2], [3, 4]]
deep_copied_list = copy.deepcopy(original_list)
original_list[0][0] = 99
print(deep_copied_list) # 输出: [[1, 2], [3, 4]],完全独立的副本
  1. 元类编程进阶:元类不仅能创建类,还可用于实现一些高级特性,如自动注册类、修改类的属性和方法等。例如,使用元类实现类的自动注册,可在元类的__init__方法中添加注册逻辑。
class MetaClass(type):
registered_classes = []
def __init__(cls, name, bases, attrs):
super().__init__(name, bases, attrs)
MetaClass.registered_classes.append(cls)
class MyClass(metaclass=MetaClass):
pass
print(MetaClass.registered_classes) # 输出: [<class '__main__.MyClass'>]
  1. 描述器的高级应用:描述器可用于实现数据验证、属性缓存等功能。比如,创建一个数据验证描述器,确保类属性的值在特定范围内。
class RangeValidator:
def __init__(self, min_val, max_val):
self.min_val = min_val
self.max_val = max_val
def __set__(self, instance, value):
if value < self.min_val or value > self.max_val:
raise ValueError(f"值必须在{self.min_val}{self.max_val}之间")
instance.__dict__[self.name] = value
def __set_name__(self, owner, name):
self.name = name
class MyClass:
num = RangeValidator(0, 100)
obj = MyClass()
obj.num = 50 # 正常设置
# obj.num = 200 # 会抛出ValueError异常
  1. 异步编程相关术语扩展:在异步编程中,除了常见的异步生成器、异步迭代器等,还有asyncio库中的事件循环(Event Loop),它是异步编程的核心,负责调度和执行异步任务;任务(Task)用于管理异步操作,可通过asyncio.create_task()创建;await只能在异步函数中使用,用于暂停协程执行,等待可等待对象完成,并返回其结果。
import asyncio
async def async_task():
await asyncio.sleep(1)
return "任务完成"
async def main():
task = asyncio.create_task(async_task())
result = await task
print(result)
asyncio.run(main())
  1. 类型提示的进阶用法:除了基本的类型标注,还可使用联合类型(如Union[int, str]表示变量可以是intstr类型 )、可选类型(Optional[int]等价于Union[int, None] )、泛型类型(如List[int]表示整数列表 )等进行更精确的类型提示,帮助静态类型检查器更好地发现代码中的类型错误。
from typing import Union, Optional, List
def my_function(value: Union[int, str]) -> Optional[str]:
if isinstance(value, int):
return str(value)
elif isinstance(value, str):
return value
return None
def process_list(lst: List[int]) -> List[str]:
return [str(i) for i in lst]
  1. Python 的内存管理机制补充:除了引用计数和垃圾回收,Python 还采用了分代回收策略,将对象分为不同的代,新创建的对象在年轻代,随着对象存活时间增加,可能会被移动到更老的代。垃圾回收器会更频繁地检查年轻代,因为年轻代中的对象通常生命周期较短,这样可以提高垃圾回收的效率。
  2. Python 中的魔法方法深入解析:除了常见的__init____str__等魔法方法,还有__call__方法,使得对象可以像函数一样被调用;__enter____exit__用于实现上下文管理器;__eq__用于定义对象的相等比较逻辑等。合理使用这些魔法方法可以让代码更加简洁和易读。
class CallableObject:
def __call__(self):
print("对象被调用了")
obj = CallableObject()
obj() # 输出: 对象被调用了

总结

掌握这些 Python 术语是深入学习和高效编程的关键。它们贯穿于 Python 编程的各个环节,从基础语法构建到复杂项目开发都起着重要作用。希望通过本文的介绍,你能对这些术语有更清晰的理解,在 Python 编程道路上更上一层楼。

TAG: Python、术语解释、编程基础、核心概念、类型提示

Python 官方文档**:https://docs.python.org/zh-cn/3.12/glossary.html,全面且权威,是学习 Python 的最佳资源之一。

Python专栏 https://blog.csdn.net/tekin_cn/category_12539454.html

posted on   TekinTian  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示