资讯中心

3【python】:常用关键字,函数,方法,属性,类,模块,包

📅 2026/8/13 11:08:42
3【python】:常用关键字,函数,方法,属性,类,模块,包
# 1. 关键字不加括号直接写 if x 0: # if 是关键字 break # break 是关键字 # 2. 函数加括号独立调用 print(hello) # print() 是函数 len(abc) # len() 是函数 # 3. 方法加括号通过对象调用 abc.upper() # upper() 是方法 [1,2].append(3) # append() 是方法 # 4. 属性不加括号通过对象获取 func.__name__ # __name__ 是属性因为它没有括号 obj.name # name 是属性因为它没有括号关键字关键字作用示例代码if条件判断开始if x 0:elif否则如果elif x 0:else否则else:for循环遍历for i in range(5):while条件循环while x 10:break跳出整个循环breakcontinue跳过本次循环continuedef定义函数def my_func():return函数返回值return resultclass定义类class MyClass:lambda定义匿名函数add lambda x,y: xyimport导入模块import mathfrom从模块导入from math import sqrttry尝试执行异常捕获try:except捕获异常except ValueError:finally无论是否异常都执行finally:raise主动抛出异常raise ValueError(错误)pass占位什么都不做passyield生成器返回值yield iand逻辑与if a 0 and b 0:or逻辑或if a 0 or b 0:not逻辑非if not a 0:in判断是否在序列中if x in list:is判断是否是同一个对象if a is None:None空值特殊常量x NoneTrue真值布尔flag TrueFalse假值布尔flag Falseend用于将结果输出到同一行或者在输出的末尾添加不同的字符# 两个元素的总和确定了下一个数 a, b 0, 1 while b 1000: print(b, end,) a, b b, ab #输出 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,break和continue的区分break语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止任何对应的循环 else 块将不执行。continue语句被用来告诉 Python 跳过当前循环块中的剩余语句然后继续进行下一轮循环。while 中使用 breakwhile 中使用 continuen 5 while n 0: n - 1 if n 2: break print(n) print(循环结束。)n 5 while n 0: n - 1 if n 2: continue print(n) print(循环结束。)输出43循环结束。输出4310循环结束。函数①函数定义def()创建定义函数就是创建一个函数告诉Python这个函数叫什么、需要什么参数、做什么事。 定义函数时代码不会执行只是告诉Python我创建了一个叫xxx的函数。def 函数名(参数列表): 函数体代码 ... return 返回值可选lambda()创建lambda 函数就是没有名字的单行函数也叫匿名函数。# 普通函数有名字多行 def add(x, y): return x y # lambda函数没名字单行 lambda x, y: x y #lambda的基本用法 lambda 参数: 表达式#map(lambda x: 加工方式, 数据) 批量加工 numbers [1, 2, 3, 4, 5] squared list(map(lambda x: x**2, numbers)) print(squared) # 输出: [1, 4, 9, 16, 25]#filter(lambda x: 筛选条件, 数据) 筛选保留 numbers [1, 2, 3, 4, 5, 6, 7, 8] even_numbers list(filter(lambda x: x % 2 0, numbers)) print(even_numbers) # 输出[2, 4, 6, 8]#reduce(lambda x: 计算, 数据) 计算 from functools import reduce numbers [1, 2, 3, 4, 5] # 使用 reduce() 和 lambda 函数计算乘积 product reduce(lambda x, y: x * y, numbers) print(product) # 输出120#sorted(数据, keylambda x: 排序依据) # 灵活排序 sorted 默认是从小到大排序升序 students [ {name: 小明, score: 85}, {name: 小红, score: 92}, {name: 小刚, score: 78}, {name: 小丽, score: 88} ] result sorted(students, keylambda s: s[score]) print(result) #输出 78、85、88、92②函数调用执行已经定义好的函数让它的代码真正跑起来。函数名(参数值) # 或 变量 函数名(参数值) # 接收返回值# 定义部分 def multiply(a, b): print(f计算 {a} × {b}) return a * b def show_message(): print(这是一个消息) # 调用部分 # 现在才开始真正执行 # 第一次调用 result1 multiply(3, 4) # 输出: 计算 3 × 4 # result1 12 # 第二次调用 result2 multiply(5, 6) # 输出: 计算 5 × 6 # result2 30 # 调用无返回值函数 show_message() # 输出: 这是一个消息③常见函数函数作用示例代码返回值abs()取绝对值abs(-5)5all()所有元素为真才真all([True, True])Trueany()任一元素为真就真any([False, True])Truebool()转为布尔值bool(0)Falsedict()转为字典dict([(a,1)]){a:1}dir()查看对象的属性和方法dir(list)属性列表enumerate()获取索引和值list(enumerate([a,b]))[(0,a),(1,b)]float()转为浮点数float(3.14)3.14functools.wraps将原函数的元信息复制到 wrapper 上functools.wraps(func)Nonefunc被装饰的原函数在 wrapper 里调用它来执行原逻辑result func(*args, **kwargs)原函数的返回值getattr获取对象的属性值getattr(user, name)属性值hasattr检查对象是否有某个属性hasattr(user, name)True/Falsehelp()查看帮助help(print)Noneid()查看内存地址id(obj)数字地址input()获取用户输入input(请输入)字符串int()转为整数int(10)10isinstance()判断类型isinstance(5, int)Trueiter()创建迭代器iter([1,2,3])迭代器对象len()获取长度len(hello)5list()转为列表list(abc)[a,b,c]logging.info记录信息级别日志logging.info(函数被调用)Nonelogging.debug记录调试级别日志logging.debug(参数: {args})Nonelogging.error记录错误级别日志logging.error(执行失败)Nonemax()取最大值max(1,5,3)5min()取最小值min(1,5,3)1next()获取迭代器下一个元素next(it)下一个元素open()打开文件open(file.txt, r)文件对象pow()次方pow(2, 3)8print()输出到控制台print(hello)Nonerange()生成数字序列range(5)range(0,5)reversed()反转返回迭代器list(reversed([1,2,3]))[3,2,1]round()四舍五入round(3.14159, 2)3.14set()转为集合去重set([1,2,2]){1,2}setattr设置对象的属性值setattr(user, name, 张三)Nonesorted()排序返回新列表sorted([3,1,2])[1,2,3]str()转为字符串str(100)100sum()求和sum([1,2,3])6time.time获取当前时间戳用于性能计时start time.time()浮点数time.sleep暂停程序执行用于模拟延迟或限流time.sleep(1)Nonetuple()转为元组tuple([1,2])(1,2)type()查看数据类型type(123)class intwrapper装饰器内部定义的包装函数替换原函数执行增强逻辑def wrapper(*args, **kwargs):原函数返回值zip()打包多个序列list(zip([1,2], [a,b]))[(1,a),(2,b)]方法依附于对象的可调用对象在类里定义方法作用示例代码返回值字符串方法.upper()转为大写hello.upper()HELLO.lower()转为小写HELLO.lower()hello.capitalize()首字母大写hello.capitalize()Hello.title()每个单词首字母大写hello world.title()Hello World.strip()去掉首尾空格 abc .strip()abc.lstrip()去掉左边空格 abc.lstrip()abc.rstrip()去掉右边空格abc .rstrip()abc.split()分割成列表a,b,c.split(,)[a,b,c].join()用连接符合并-.join([a,b])a-b.replace()替换字符串hello.replace(l,x)hexxo.find()查找位置找不到返回-1hello.find(e)1.index()查找位置找不到报错hello.index(e)1.count()统计字符出现次数hello.count(l)2.startswith()判断是否以...开头hello.startswith(he)True.endswith()判断是否以...结尾hello.endswith(lo)True.isdigit()是否全数字123.isdigit()True.isalpha()是否全字母abc.isalpha()True.format()格式化字符串{}岁.format(18)18岁列表方法.append()末尾添加元素[1,2].append(3)None列表变[1,2,3].insert()指定位置插入[1,3].insert(1,2)None列表变[1,2,3].extend()合并另一个列表[1,2].extend([3,4])None列表变[1,2,3,4].remove()删除指定元素[1,2,3].remove(2)None列表变[1,3].pop()删除并返回元素[1,2].pop()2列表变[1].index()查找元素位置[1,2,3].index(2)1.count()统计元素次数[1,2,2,3].count(2)2.sort()排序改变原列表[3,1,2].sort()None列表变[1,2,3].reverse()反转改变原列表[1,2,3].reverse()None列表变[3,2,1].clear()清空列表[1,2,3].clear()None列表变[]字典方法.keys()获取所有键{a:1}.keys()dict_keys([a]).values()获取所有值{a:1}.values()dict_values([1]).items()获取所有键值对{a:1}.items()dict_items([(a,1)]).get()获取值找不到返回Noned.get(b)None.update()更新字典d.update({b:2})None.pop()删除并返回值d.pop(a)1.clear()清空字典d.clear()None集合方法.add()添加元素{1,2}.add(3)None集合变{1,2,3}.remove()删除元素{1,2,3}.remove(2)None集合变{1,3}.union()并集合并{1,2}.union({2,3}){1,2,3}.intersection()交集相同元素{1,2}.intersection({2,3}){2}.difference()差集在前不在后{1,2}.difference({2,3}){1}文件方法.read()读取整个文件file.read()字符串.readline()读取一行file.readline()字符串.readlines()读取所有行file.readlines()字符串列表.write()写入内容file.write(hello)写入的字符数.writelines()写入多行file.writelines([a\n,b\n])None.close()关闭文件file.close()None.seek()移动文件指针file.seek(0)None.tell()获取文件指针位置file.tell()当前位置特殊方法__init__创建对象时初始化对象属性obj MyClass()__str__print()或str()返回用户友好的字符串print(obj)__repr__交互式环境或repr()返回开发者友好的字符串repr(obj)__len__len()返回长度len(obj)__iter__iter()或for循环返回迭代器对象for x in obj:__next__next()或for循环内部返回下一个元素next(obj)__getitem__obj[key]获取索引/键对应的值obj[0]或obj[key]__setitem__obj[key] value设置索引/键对应的值obj[0] 10__delitem__del obj[key]删除索引/键对应的值del obj[0]__contains__in操作符判断元素是否在对象中if x in obj:__call__obj()让对象可以像函数一样调用obj()__add__操作符定义加法行为obj1 obj2__sub__-操作符定义减法行为obj1 - obj2__mul__*操作符定义乘法行为obj1 * obj2__eq__操作符定义相等比较obj1 obj2__lt__操作符定义小于比较obj1 obj2__gt__操作符定义大于比较obj1 obj2__enter__with语句开始定义上下文管理器进入逻辑with obj:__exit__with语句结束定义上下文管理器退出逻辑with obj:__new__创建对象之前先于__init__控制对象创建过程一般很少重写__del__对象被销毁时定义清理逻辑del objOS常用方法os.getcwd()获取当前工作目录os.getcwd()/home/user/projectos.chdir()切换工作目录os.chdir(/tmp)Noneos.listdir()列出目录下所有文件和文件夹os.listdir(.)[a.py, b.py, test/]os.mkdir()创建单级目录os.mkdir(new_folder)Noneos.makedirs()递归创建多级目录os.makedirs(a/b/c)Noneos.rmdir()删除空目录os.rmdir(empty_folder)Noneos.remove()删除文件os.remove(file.txt)Noneos.rename()重命名文件或目录os.rename(old.txt, new.txt)Noneos.system()执行系统命令os.system(ls -l)命令退出码os.walk()遍历目录树生成器for root, dirs, files in os.walk(.):生成器每次返回(root, dirs, files)os.path.exists()判断路径是否存在os.path.exists(/tmp)True / Falseos.path.isfile()判断是否为文件os.path.isfile(a.py)True / Falseos.path.isdir()判断是否为目录os.path.isdir(test)True / Falseos.path.getsize()获取文件大小字节os.path.getsize(a.py)1024os.path.join()拼接路径自动处理分隔符os.path.join(a, b, c.txt)a/b/c.txtos.path.abspath()获取绝对路径os.path.abspath(a.py)/home/user/a.pyos.path.dirname()获取路径的目录部分os.path.dirname(/a/b/c.txt)/a/bos.path.basename()获取路径的文件名部分os.path.basename(/a/b/c.txt)c.txtos.path.split()分割路径为目录和文件名os.path.split(/a/b/c.txt)(/a/b, c.txt)os.path.splitext()分割文件名和扩展名os.path.splitext(a.py)(a, .py)os.environ.get()获取环境变量os.environ.get(PATH)/usr/bin:/binos.cpu_count()获取 CPU 核心数os.cpu_count()8os.sep系统路径分隔符属性os.sep/或\\os.linesep系统换行符属性os.linesep\n或\r\n属性属性就是挂在对象上的标签用来存储数据。依附于对象的数据不是可调用对象常用属性属性用在谁身上作用__name__函数、类、模块获取名字__doc__函数、类、模块获取文档__dict__所有对象查看所有属性和值__class__所有对象查看属于哪个类__file__模块查看文件路径实例假设我们有一个名为 example.py 的模块def greet(): print(来自 example 模块的问候) if __name__ __main__: print(该脚本正在直接运行。) greet() else: print(该脚本作为模块被导入。)①直接运行 example.py如果你直接运行 example.py输出将是# 该脚本正在直接运行。 # 来自 example 模块的问候在这种情况下__name__ 的值是 __main__所以 if __name__ __main__: 块中的代码会被执行。②导入 example.py如果你在另一个脚本中导入 example.py例如# another_script.py import example example.greet() #输出将是 #该脚本作为模块被导入。 #来自 example 模块的问候在这种情况下__name__ 的值是example模块名所以 if __name__ __main__: 块中的代码不会被执行。类类就是你用class关键字自己定义的那个东西创建对象的模板你用类来定义一个对象长什么样然后用类来生产具体的对象。常用的类类作用示例代码说明基础数据类型类str字符串s hello文本数据int整数n 10整数数字float浮点数f 3.14小数complex复数c 3 4j复数运算bool布尔值b TrueTrue / Falselist列表lst [1, 2, 3]有序可变序列tuple元组t (1, 2, 3)有序不可变序列dict字典d {name: 张三}键值对映射set集合s {1, 2, 3}无序不重复集合异常类Exception所有异常的基类raise Exception(错误)捕获所有异常ValueError值错误int(abc)值不合法TypeError类型错误a 1类型不匹配IndexError索引错误[1,2][5]索引超出范围KeyError键错误{a:1}[b]字典键不存在StopIteration迭代结束next(it)迭代器已到末尾FileNotFoundError文件不存在open(不存在.txt)文件找不到迭代器 / 生成器类generator生成器对象def gen(): yield 1调用生成器函数返回range范围序列range(5)生成数字序列enumerate枚举对象enumerate([a,b])带索引的遍历zip压缩对象zip([1,2], [a,b])打包多个序列map映射对象map(str, [1,2])对每个元素应用函数filter过滤对象filter(lambda x: x0, [-1,2])过滤元素reversed反转对象reversed([1,2,3])反向遍历模块模块就是python自带的程序库。类型叫什么例子怎么装怎么用Python 自带标准库 / 内置模块os、sys、math、time装 Python 时就有了import os直接用别人写的第三方库 / 扩展库requests、pandas、flask需要手动装pip install xxximport requests安装后才能用你自己写的自定义模块mytools.py不需要装import mytoolsPython 本身自带的一些标准的模块库模块名功能描述math数学运算如平方根、三角函数等os操作系统相关功能如文件、目录操作sys系统相关的参数和函数random生成随机数datetime处理日期和时间json处理 JSON 数据re正则表达式操作collections提供额外的数据结构如 defaultdict、dequeitertools提供迭代器工具functools高阶函数工具如 reduce、lru_cache包包就是一个“文件夹”里面放着多个相关的模块.py 文件这样就把“一堆工具函数”按功能拆成了多个模块放在同一个包里。mytools/ ← 这是一个包文件夹__init__.py ← 必须有这个文件告诉 Python 这是一个包math_utils.py ← 模块1放数学相关函数string_utils.py ← 模块2放字符串相关函数file_utils.py ← 模块3放文件相关函数date_utils.py ← 模块4放日期相关函数