网站首页 > 技术文章 正文
1. 开篇:Python 速成,拒绝打瞌睡!
- 目标: 学完这份秘籍,让你对Python的“核心绝招”理解更深,写代码时少踩坑、多装X(效率的X)!
- 前提: 你已经啃完了《Byte of Python》前十三章(勇士!),至少知道print("Hello World")不是打印机在打招呼。
- 时间: 建议入职第二周抽1-2天(摸鱼时间不算!)。别担心,内容精炼,保证比刷短视频学得多!
2. import vs from...import:点菜还是自助餐?
想象一下,Python的模块就是个超级大饭店,里面有无数美味(函数、变量)。你怎么“吃”它们?
- 2.1 点菜指南 (Guideline)
- import 整桌菜 (import module): 何时用? 当你点的某道菜(比如open)和自家厨房(你的代码)的菜重名了!为了避免厨师(解释器)懵逼——“你到底要上谁的open?”,请大声说:“来一份os.open!” (原名点菜,避免冲突)。
- from...import 单点几道 (from module import thing): 何时用? 情况1:你是这家的老主顾,就爱吃math.sqrt(算平方根)和random.randint(摇骰子)。每次都喊全名“math的sqrt”、“random的randint”太累?直接喊:“来份sqrt!再来份randint!” (省事!)。 何时用? 情况2:你是个挑剔的吃货,只想吃sys店的argv(命令行参数)这道前菜,不想被path、platform这些配菜干扰视线。那就精准下单:“只要sys.argv!” (精准导入,避免名字空间污染)。
- 2.2 优秀示范 (Good Example)
- import避冲突: 你家有个函数叫open,但你又想用系统自带的os.open。咋办?
- import os # 告诉厨师:我接下来点的带`os.`前缀的菜,都从os店拿! def my_open(file): # 你家自制的open print(f"Opening my way: {file}") # 想用系统自带的open打开一个文件 file_descriptor = os.open("secret_plan.txt", os.O_RDONLY) # 清晰!不会调用到my_open
- 段子手点评: 这就好比你家里有把“开罐器”(my_open),但你想开保险箱(os.open)。直接喊“开罐器”肯定开不了保险箱!得喊“请用专业的os.open开保险箱!”。
- from...import省事 & 精准:
- 省事版: 天天用math店的sqrt和pi。
- from math import sqrt, pi # 直接下单:sqrt和pi! hypotenuse = sqrt(3**2 + 4**2) # 直接用sqrt,爽! pie_area = pi * radius**2 # 直接用pi,更爽!
- 段子手点评: 就像常去奶茶店,直接喊“老样子!”,店员就知道你要大杯珍珠奶茶半糖去冰(sqrt和pi)。不用每次都说“我要你们店的招牌大杯珍珠奶茶半糖去冰”。
- 精准版: 只要sys.argv(命令行参数)。
- from sys import argv # 精准下单:只要argv这道菜! script_name = argv[0] # 直接用argv,清爽! # 不会不小心误用 sys.platform, sys.path 等
- 段子手点评: 这就好比你去高级餐厅只为了吃它家的招牌鱼子酱(argv)。from...import就是直接说“我就要鱼子酱”,而不是import sys那样把整个包含面包黄油(path, platform)的餐篮都端上来。
3. try...except: 代码界的“背锅侠”养成计划
写代码就像走钢丝,一不小心就摔(报错)。try...except 就是你的安全网和“甩锅”神器!
- 3.1 江湖规矩 (Guideline)
- try 区: 这是你的 高风险表演区。把可能出错的代码放这里,比如打开不存在的文件、除以零、访问不存在的列表索引。
- except 区: 这里是 专业接锅区。如果try区表演失误(抛出异常),解释器会立刻在except区找匹配的“背锅侠”。 匹配规则: 从上到下找,找到第一个能接住这个异常类型的except,就让它处理(执行它下面的代码)。找不到?锅就甩给外层更大的try(或者直接砸用户脸上 – 程序崩溃!)。
- 自定义“背锅侠” (User-defined Exceptions): 系统给的异常不够用?自己造!继承自Exception类,你就是锅王之王!比如class CoffeeSpillError(Exception)。
- 3.2 优秀示范 (Good Example)
- 精准甩锅(子类在上): 抓异常要像排兵布阵,小兵(子类)站前排,将军(父类)殿后。
- try: # 高危操作:可能抛出 FileNotFoundError (子类) 或 IOError (父类,更通用) with open("秘密日记.txt", "r") as f: content = f.read() except FileNotFoundError: # 小兵1:专门抓“文件找不到”的锅 print("阿欧!日记本被猫叼走了!") except IOError: # 将军:抓所有其他类型的IO锅(比如没权限读) print("日记本在,但锁住了!有密码?") except Exception as e: # 终极背锅侠:兜住所有没预料到的锅(一般用于记录日志) print(f"发生了不可描述的意外:{e}")
- 段子手点评: 这就好比:猫叼走日记(FileNotFoundError)是小贼,交给巡捕(except FileNotFoundError);日记锁了(IOError)是门卫刁难,找捕头(except IOError);要是天降陨石砸了日记本(Exception),那就只能呼叫神龙(except Exception)了!小兵不站前排,将军就把小贼当陨石处理了!
- 定制专属锅 (User-defined Exception):
- class CoffeeSpillError(Exception): # 继承自 Exception """自定义异常:咖啡洒键盘上了!""" def __init__(self, coffee_type): self.coffee_type = coffee_type # 记录洒了什么咖啡 def __str__(self): # 当异常被打印时显示的信息 return f"悲剧!{self.coffee_type}咖啡毁了你的键盘!" try: coding_skill = 100 if coding_skill > 80: raise CoffeeSpillError("超大杯拿铁") # 主动抛出自定义异常! except CoffeeSpillError as e: print(e) # 输出:悲剧!超大杯拿铁咖啡毁了你的键盘! # 可以在这里进行清理键盘等操作...
- 段子手点评: 系统可没定义CoffeeSpillError!自己造个锅(class CoffeeSpillError),想什么时候甩(raise),就什么时候甩!精准描述事故现场(__str__),让接锅侠(except)知道是该拿纸巾还是换键盘。
- 3.3 翻车现场 (Bad Example)
- 将军抢功(父类在上): 把大BossException放第一个except,小兵们就永远没机会表现了!
- try: raise MyCustomError("专属错误") # 抛出自定义错误 except Exception: # 终极背锅侠冲在最前面! print("逮到一个错误!但不知道具体是啥...") except MyCustomError: # 专属背锅侠在后面干瞪眼 print("这个本该我处理的专属错误啊!") # 永远不会执行!
- 段子手点评: 好比公司出了个小问题(MyCustomError),你还没开口,大老板(except Exception)跳出来喊“都是我的错!”。你(except MyCustomError)还怎么展示你解决这个特定问题的能力?锅都被大老板一人揽完了!
4. list:你的万能“购物清单”
Python的list,灵活得像你的购物清单!能装万物,随时增删改查。
- 4.1 清单管理指南 (Guideline)
- 创建清单: my_list = [1, "苹果", True, 3.14] 方括号 [] 一括,啥都能往里塞!第一个商品是my_list[0]。
- 负数索引: my_list[-1] 拿到最后一个商品!-2是倒数第二个... 公式:list[-n] = list[len(list) - n] (数学不好也能用!)。
- 切片 (Slice): my_list[1:3] 拿到索引1(第二件)到索引3(第四件)之前的商品(即索引1和2的商品)。[:3]从头切到索引3前;[2:]从索引2切到尾;[:]复制整个清单(新购物车)。
- 加商品: append(item):老实排队,加在队尾。哪怕item本身是个清单,也只占一个位置(变成嵌套清单)。 insert(index, item):强行插队!插在index位置,后面商品自动后移。 extend(another_list):合并购物车!把another_list里的商品一个个拿出来放进你的清单后面。
- 找商品: index(item):查商品位置。找到item第一次出现的位置(索引),找不到就怒摔清单(报错)! item in my_list:查有没有。有就True,没有False。
- 删商品: remove(item):精准移除第一个遇到的item。找不到也怒摔清单(报错)! pop():扔掉队尾商品,并告诉你扔了啥。
- 清单操作符: + (加号): new_list = list1 + list2 复制两个清单合并成一个新清单(慢!适合小清单)。 * (乘号): repeat_list = [1, 2] * 3 => [1, 2, 1, 2, 1, 2] 复制重复。 += (增强赋值): list1 += [‘new’] 等同于 list1.extend([‘new’]) 原地扩展(快!适合大清单)。
- 4.2 优秀示范 (Good Example)
- extend合并购物车(快!):
- groceries = ["鸡蛋", "牛奶", "面包"] fruits = ["苹果", "香蕉", "橙子"] groceries.extend(fruits) # 把水果一个个放进 groceries 购物车 print(groceries) # 输出: ['鸡蛋', '牛奶', '面包', '苹果', '香蕉', '橙子'] (一车搞定!)
- 段子手点评: extend像把另一个购物车(fruits)里的东西,一件件倒进你的购物车(groceries),高效省力!如果用groceries = groceries + fruits,相当于先去结账(groceries),再拿个新车装水果(fruits),最后把两袋东西合并(=),费时费力(尤其东西多时)!
- 4.3 翻车现场 (Bad Example)
- 大清单用+合并(慢!):
- huge_list1 = [ ... ] # 假设这里有10万个元素 huge_list2 = [ ... ] # 假设这里也有10万个元素 # 灾难!创建了一个包含20万个元素的 新 列表,然后丢弃了原来的两个 merged_list_slow = huge_list1 + huge_list2 # 慢!内存和时间开销大 # 正确姿势:原地扩展,不创建新的大列表 huge_list1.extend(huge_list2) # 快!只在原有列表后面添加元素
- 段子手点评: 想象你要搬两座大山(huge_list1和huge_list2)的土。用+相当于:先挖空山1,再挖空山2,然后堆成一座新大山(merged_list_slow),累死!用extend相当于:直接在山1后面接着堆山2的土,省了挖空和建新山的力气!
5. self: 类方法里的“自报家门”
在Python的类(Class)世界里,self 就是你的身份证。每次进方法(Method),都得先亮证!
- 5.1 江湖规矩 (Guideline)
- 它是谁? self 就是当前调用这个方法的对象实例自己(相当于Java/C++里的this)。
- 何时用? 定义类方法时,第一个参数必须是self! 这是Python的硬性规定,不是建议!
- 怎么用? 在方法内部,想访问这个对象自己的属性(变量)或其他方法,必须通过self.属性名或self.方法名()。
- 调用时? 完全不用管self! Python解释器会自动把调用这个方法的对象塞给self参数。你只需要关心self后面的参数。
- 5.2 优秀示范 (Good Example)
- 标准姿势:定义带self,调用忽略self
- class Dog: def __init__(self, name): # 构造方法,第一个参数必须是self! self.name = name # 给自己贴个名字标签 (self.name) self.tricks = [] # 再贴个技能标签 (self.tricks) def add_trick(self, trick): # 添加技能方法,第一个参数必须是self! self.tricks.append(trick) # 操作自己的技能列表 (self.tricks) def bark(self): # 叫方法,第一个参数必须是self! print(f"{self.name} says: Woof! I know {self.tricks}!") # 创建两只狗(对象实例) fido = Dog("Fido") # Python自动调用 __init__(self="Fido对象", name="Fido") buddy = Dog("Buddy") # Python自动调用 __init__(self="Buddy对象", name="Buddy") # 让狗学技能(调用方法,忽略self!) fido.add_trick("roll over") # Python自动:add_trick(self=fido对象, trick="roll over") buddy.add_trick("play dead") # Python自动:add_trick(self=buddy对象, trick="play dead") # 让狗叫(调用方法,忽略self!) fido.bark() # 输出: Fido says: Woof! I know ['roll over']! buddy.bark() # 输出: Buddy says: Woof! I know ['play dead']!
- 段子手点评: 想象每只狗(fido, buddy)进方法屋(add_trick, bark)都要先刷身份证(self)。屋里的指令(append, print)只有看到身份证(self.)才知道该操作哪只狗的技能表(tricks)和名字(name)。没有self?屋里就乱套了——“你谁啊?要给谁加技能?!”。
- 5.3 翻车现场 (Bad Example)
- 忘带身份证(定义方法漏掉self):
- class Cat: def purr(): # 错误!漏了self! print("Purrrr...") whiskers = Cat() whiskers.purr() # 报错!TypeError: purr() takes 0 positional arguments but 1 was given
- 翻车原因: Python调用whiskers.purr()时,自动把whiskers对象作为第一个参数(相当于purr(whiskers))传进去。但方法定义时purr()说“我啥参数都不要啊!”。一个要传,一个不收,直接吵架(报错)!
- 身份证拿错位置(self不是第一个参数):
- class Bird: def fly(altitude, self): # 错误!self不是第一个! print(f"{self.name} flies at {altitude} meters!") tweety = Bird() tweety.name = "Tweety" tweety.fly(100) # 报错!fly() missing 1 required positional argument: 'self'
- 翻车原因: Python调用tweety.fly(100)时,自动把tweety塞给第一个参数。但方法定义里第一个参数叫altitude,第二个才是self。结果解释器以为altitude = tweety对象, self = 100。然后它发现self.name(100.name)不存在?彻底懵圈!更惨的是,它觉得你少传了一个参数(因为定义要2个,你只显式传了1个)。
6. and / or: 逻辑界的“真假美猴王”
Python的and和or很调皮!它们不直接返回True/False,而是返回实际参与比较的值之一。像极了“真假美猴王”——你以为它是真(True),它可能是个值;你以为它是假(False),它也可能是个值!
- 6.1 火眼金睛辨真伪 (Guideline)
- 假值 (Falsy): 0, "" (空字符串), [] (空列表), () (空元组), {} (空字典), None。在布尔上下文中视为False。
- 真值 (Truthy): 除了假值以外的一切! 非零数字、非空字符串/列表/元组/字典、非None对象... 在布尔上下文中视为True。
- and 操作符的“找假”逻辑: 从左到右依次求值每个表达式。 如果遇到第一个假值,返回这个假值,后面的不看! 如果全是真值,返回最后一个真值。
- or 操作符的“找真”逻辑: 从左到右依次求值每个表达式。 如果遇到第一个真值,返回这个真值,后面的不看! 如果全是假值,返回最后一个假值。
- 6.2 优秀示范 (Good Example)
- and / or 返回实际值:
- # and 找假 (返回第一个假值,或最后一个真值) print(0 and 42) # 输出: 0 (0是假,直接返回) print(3 and 5 and 0) # 输出: 0 (0是假,返回它) print(1 and 2 and 3) # 输出: 3 (全真,返回最后一个) # or 找真 (返回第一个真值,或最后一个假值) print(0 or 42) # 输出: 42 (42是真,直接返回) print("" or [] or 99) # 输出: 99 (99是第一个真值) print(None or 0 or "") # 输出: "" (全假,返回最后一个假值)
- 段子手点评: and像严格安检员:发现假货(0)立马扣下(返回假值),一路畅通(全真)就放行最后一个(返回最后真值)。or像饥渴HR:看到真人才(42)立马发Offer(返回真值),实在找不到(全假)只能录个充数的(返回最后假值)。
- 6.3 翻车现场 (Bad Example)
- 经典的“假值陷阱” (The Falsy Trap): 想用condition and a or b模仿三元运算符a if condition else b?当a是假值时翻车!
- # 想实现:如果 user_name 非空,显示它,否则显示 "Guest" user_name = "" # 空字符串是假值! # 错误示范:condition and a or b display_name = user_name and user_name or "Guest" print(display_name) # 输出: Guest (正确,但...) user_name = "Alice" # 真值 display_name = user_name and user_name or "Guest" print(display_name) # 输出: Alice (正确) # 翻车现场:当 user_name 是假值(比如0)时 user_name = 0 # 0是假值,但可能是有效用户名! display_name = user_name and user_name or "Guest" print(display_name) # 输出: Guest (错误!应该显示0)
- 翻车原因: user_name and user_name 的演算:
- 当user_name = 0 (假值)时:0 and 0 => 返回第一个假值 0。
- 然后 0 or "Guest" => 返回第一个真值 "Guest" (因为0是假值)。
- 结果本该显示0,却显示了"Guest"!
- 正确姿势:用真正的三元表达式 a if condition else b
- user_name = 0 display_name = user_name if user_name else "Guest" # 或者更精确: user_name if user_name is not None else "Guest" print(display_name) # 输出: 0 (正确!)
- 段子手点评: 想用and/or玩“条件选择”?小心a是假值(0, "", [])时,and返回了假a,然后or一看“假的?不要!”,就选了b。就像相亲:你(condition)觉得对方(a)不错(True),结果媒人(and)发现对方其实是个空壳(假值),转头就介绍了备胎(b)!用a if condition else b才是亲自把关!
7. 文档的"前世今生"(Document History & Structure)
- 原版:
- Material Type: Internal Status: Draft | 2011/04/20-2011-4-26 | Tan Min | Drafting |
- 趣味变身:
文档档案馆
- 身份: 内部机密文件(Internal)
- 状态: 酝酿中的美味草稿(Draft)
- 诞生记: 2011年4月20-26日,由"Python传教士"谭敏(Tan Min)闭关撰写(Drafting)
- 段子手点评: 这份文档比你家的祖传菜谱还老(2011年!),但Python的精华就像老酒——越陈越香!只是注意有些语法细节可能随Python版本升级微调(比如Python 2 vs 3)。
文档藏宝图(Document Structure)
原版目录太像教科书目录?看我的寻宝指南!
原版章节 | 寻宝指南标签 | 宝藏内容 |
1. Introduction | 开胃前菜:学习指南 | 目标/前提/学习时长 |
2. import | 模块点餐术 | import vs from...import 的精准点菜法 |
3. try...except | 异常甩锅大法 | 异常捕获顺序/自定义异常 |
4. List object | 万能购物清单 | 列表的增删改查神操作 |
5. Self | 类方法身份证 | self的必带规则 |
6. And-or | 逻辑真假美猴王 | and/or返回值的玄机 |
寻宝提示: 这份地图按"知识美味度"排序!先吃开胃菜(Intro),再尝主菜(import, try),最后品甜点(and-or),保证消化顺畅!
8.全文档"翻车现场"合集(Bad Examples Showcase)
8.1 import的翻车现场
- 原罪: 大清单用+合并(龟速!)
- 翻车代码:
- big_list1 = [...] # 假设10万元素 big_list2 = [...] # 假设10万元素 merged_snail = big_list1 + big_list2 # 蜗牛合并法
- 正确姿势:
- big_list1.extend(big_list2) # 火箭合并法
- 翻车点评: 用+合并大列表,等于让两只蜗牛背着全部家当交换位置再合并。extend是直接开传送门,原地扩容!
8.2 try-except的翻车现场
- 原罪: 异常捕获顺序颠倒(父类抢功!)
- 翻车代码:
- try: raise MyCustomError("专属错误") except Exception: # 大Boss冲前面 print("逮到错误但不知道细节!") except MyCustomError: # 专属客服干瞪眼 print("这本该我处理啊!") # 永不执行!
- 正确姿势:
- try: raise MyCustomError("专属错误") except MyCustomError: # 专属客服接单 print("专属错误已处理!") except Exception: # 大Boss兜底 print("未知错误捕获!")
- 翻车点评: 让大Boss(Exception)站前台,就像让CEO接客服电话——专属问题(MyCustomError)永远得不到专业处理!
8.3 List的翻车现场
- 原罪: 大清单用+合并(内存爆炸!)
- 翻车代码:
- huge_list = [1, 2, 3, ...] # 10万个元素 add_list = [4, 5, 6, ...] # 10万个元素 huge_list = huge_list + add_list # 创建20万新列表
- 正确姿势:
- huge_list.extend(add_list) # 原地扩容,省时省力
- 翻车点评: +操作如同搬家——先租新仓库(新列表),搬旧家(huge_list),再搬新家具(add_list),最后退旧房。extend是直接扩建老房子,省下中介费!
8.4 Self的翻车现场
- 原罪: 类方法漏掉self(身份不明!)
- 翻车代码:
- class Cat: def purr(): # 致命错误!缺self! print("Purrr...") kitty = Cat() kitty.purr() # 报错!TypeError
- 正确姿势:
- class Cat: def purr(self): # 带身份证! print(f"{self.name} says Purrr...")
- 翻车点评: 忘带self就像猫进VIP室不亮会员卡——服务生(Python解释器)怒吼:"你是谁家的猫?凭什么给你服务!"
8.5 And-or的翻车现场
- 原罪: 用and-or模仿三元表达式(假值陷阱!)
- 翻车代码:
- name = "" display = name and name or "Guest" # 显示"Guest"(空名变客人?)
- 正确姿势:
- name = "" display = name if name else "Guest" # 真·三元表达式 # 或更精确: name if name is not None else "Guest"
- 翻车点评: and-or遇到假值("")就像迷糊月老:看到空名字(""),心想"这人不存在?",反手给你配了个"Guest"!用真三元才是清醒红娘。
9. 学习指南的"游戏化生存法则"(Introduction Remix)
- 原版:
- 目标:加深理解... 前提:读完1-13章... 时长:1-2天
- 趣味变身:
Python速通任务书 (Mission: Python Core)
- 主线任务: 打通Python核心副本,解锁【脚本高手】成就!
- 装备检查: 已通关《Byte of Python》第1-13关 (没通关?速去补课!)
- 副本时限: 入职第二周,消耗1-2个"工作日"能量块(摸鱼时间无效!)
- 通关秘籍: 本手册即你的"作弊码",专治各种报错懵圈!
NPC提示: 别被时长吓到!知识点已压缩成"记忆面包",吃一口顶十页!
10.全文档"梗图金句"终极总结
10.1 import 模块点餐术
- 金句: import 整桌 防撞名,from...import 单点 省口水!
- 梗图脑补:
- 厨师:要整个os套餐?
你:不!只来份argv打包!(from sys import argv)
10.2 try...except 甩锅大法
- 金句: 子类异常站前排,父类兜底不抢功!
- 梗图脑补:
- ♂ except FileNotFoundError:小贼(文件丢失)归我!
except Exception:本王只接陨石砸服务器的大案!
10.3 list 购物清单术
- 金句: 小清单用+,大清单extend!切片复制用[:]!
- 梗图脑补:
- list1 + list2:蜗牛搬家,累死!
list1.extend(list2):空间传送,秒合体!
10.4 self 自报家门
- 金句: 类方法进门先亮证,self就是身份证!
- 梗图脑补:
- fido.bark():狗子进方法屋
门卫:刷卡!(self.name亮证)→ "汪!我是Fido!"
10.5 and/or 真假美猴王
- 金句: and找假值,or找真值,三元表达式保平安!
- 梗图脑补:
- and-or陷阱:空名("")变客人("Guest") → 社死现场!
真三元:name if name else "Guest" → 精准救场!
终极防秃提示
学习时注意:
- print "内容" → Python 2
print("内容") → Python 3(现在都用这个!) - Python 3的/除法默认真除法(5/2=2.5),Python 2是整数除(5/2=2)
- Python 3的字符串默认Unicode,告别u"中文"前缀烦恼
防秃口诀: 学新不学旧,Python 3走天下!
毕业典礼致辞
恭喜!您已食用完 《防秃指南:Python高频考点串烧》 !
江湖再见!
猜你喜欢
- 2025-06-13 Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- 2025-06-13 python之类的定义和对象创建篇(如何在python中定义一个属于对象的数据成员?)
- 2025-06-13 Python函数调用常见的8个错误及解决方案
- 2025-06-13 Python学不会来打我(30)python模块与包详解
- 2025-06-13 Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 266℃Python短文,Python中的嵌套条件语句(六)
- 265℃python笔记:for循环嵌套。end=""的作用,图形打印
- 264℃PythonNet:实现Python与.Net代码相互调用!
- 259℃Python实现字符串小写转大写并写入文件
- 258℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 118℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 92℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python中怎么给属性增加类型检查或合法性验证?
- 如何把python绘制的动态图形保存为gif文件或视频
- Python XOR异或 操作(python异或函数)
- 每天学点Python知识:使用制表符或换行符来添加空白
- Python3+ 变量命名全攻略:PEP8 规范 + 官方禁忌 + 实战技巧,全搞懂!
- python之类的定义和对象创建篇(如何在python中定义一个属于对象的数据成员?)
- Python函数调用常见的8个错误及解决方案
- Python学不会来打我(30)python模块与包详解
- 《防秃指南:Python高频考点串烧(附翻车现场实录)》
- Python 面向对象:掌握类的继承与组合,让你的代码更高效!
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)