📢 划重点 :不管你是编程小白还是转行大神,这篇Python入门指南都能让你少走弯路,快速上手!附赠实用代码片段和常见坑位提醒,建议收藏慢慢看!
一、为啥要学Python?我直接说干货 如果你还在纠结要不要学Python,那我只能说——别想了,学就对了!为啥?
上手容易 :语法简单,代码读起来像英语,告别复杂的大括号和分号
用途广泛 :数据分析、人工智能、网站开发、自动化脚本、爬虫...样样能行
就业香 :不管是转行还是升职,Python技能都是真香
社区强大 :遇到问题一搜,海量教程和答案等着你
我自己就是从零开始学的Python,一年内从"print是啥"到独立开发项目。只要方法对,学习曲线真的不陡。
二、环境搭建:一次到位,省心省力 很多初学者卡在第一步:环境安装。这里我手把手教你,保证一遍过!
2.1 下载安装Python 直接访问 Python官网 ,下载最新版本(目前是Python 3.11)。
Windows用户注意 :安装时记得勾选"Add Python to PATH"!这是新手第一个大坑,不勾选会导致后面命令行找不到Python。
Mac用户 :可以用自带的Python,但建议用Homebrew安装: brew install python3
2.2 选择一个顺手的编辑器 我强烈推荐以下几款:
VS Code
:轻量级但功能强大,配合Python插件简直完美
PyCharm :专业Python IDE,功能齐全(社区版免费够用)
Jupyter Notebook :数据分析必备,交互式编程超爽
初学者建议先用VS Code,界面友好,上手快。
2.3 测试环境 打开命令行(Windows用cmd或PowerShell,Mac用Terminal),输入:
python --version 如果显示Python版本号,恭喜你,环境搭好了!再试试进入Python交互环境:
python 看到 >>>
提示符,就可以输入Python代码了:
print ( "Hello, 我的Python之旅开始啦!" ) 三、Python基础语法:一学就会 3.1 变量和数据类型 Python中变量不需要声明类型,直接赋值就能用:
# 整数 age = 25
# 浮点数(小数) height = 175.5 # 字符串 name = "张三" # 布尔值 is_student = True # 打印变量 print ( f"我叫 { name } ,今年 { age } 岁,身高 { height } cm,学生身份: { is_student } " ) 常见数据类型有:
类型 例子 用途 int 42 整数 float 3.14 小数 str "你好" 文本
bool True/False 真/假 list [1, 2, 3] 列表(可修改) tuple (1, 2, 3) 元组(不可修改) dict {"name": "张三"} 字典(键值对) set {1, 2, 3} 集合(唯一值)
3.2 运算符:和数学差不多 # 算术运算符 a = 10 b = 3 print ( a + b ) # 13(加) print ( a - b ) # 7(减) print (
a * b ) # 30(乘) print ( a / b ) # 3.3333...(除,结果是float) print ( a // b ) # 3(整除,舍弃小数部分) print ( a % b ) # 1(取余/模) print ( a ** b ) # 1000(幂,10的3次方) # 比较运算符 print ( a == b ) # False(等于) print ( a != b ) # True(不等于) print ( a > b ) # True(大于) print ( a < b ) # False(小于) # 逻辑运算符 x = True y = False print ( x and y ) # False(与) print ( x or y ) # True(或) print ( not x ) # False(非) 3.3 条件语句:做决策 Python用缩进来表示代码块,这点很特别:
age = 20 if age < 18 : print ( "未成年" ) elif age >= 18 and age < 60 : print ( "成年人" ) else : print ( "老年人" ) 注意 :Python用4个空格作为缩进(不是Tab)。缩进错误是新手常见错误!
3.4 循环:重复执行 两种常见循环:
# for循环:适合已知循环次数 for i in range ( 5 ): # range(5)生成[0,1,2,3,4] print ( i ) # while循环:适合未知循环次数 count = 0 while count < 5 : print ( count ) count += 1 # 别忘了更新条件,否则会无限循环! 循环控制:
# break:立即退出循环 for i in range ( 10 ): if i == 5 : break # 到5就停止 print ( i ) # 只打印0到4 # continue:跳过当前循环 for i in range ( 10 ): if i % 2 == 0 : continue # 跳过偶数 print ( i ) # 只打印奇数 3.5 函数:代码复用的基本单位 # 定义函数 def greet(name, age=18): # age有默认值 """这是函数说明文档""" return f"你好,{name}!你今年{age}岁了。" # 调用函数 message = greet("小明", 20) print(message) # 输出:你好,小明!你今年20岁了。 # 使用默认参数 message = greet("小红") # 不传age,使用默认值 print(message) # 输出:你好,小红!你今年18岁了。 3.6 列表:最常用的数据结构 # 创建列表 fruits = ["苹果", "香蕉", "橙子"] # 访问元素 print(fruits[0]) # 苹果(索引从0开始) print(fruits[-1]) # 橙子(负索引从末尾开始) # 修改元素 fruits[1] = "葡萄" print(fruits) # ['苹果', '葡萄', '橙子'] # 添加元素 fruits.append("西瓜") # 添加到末尾 print(fruits) # ['苹果', '葡萄', '橙子', '西瓜'] # 插入元素 fruits.insert(1, "梨") # 在索引1处插入 print(fruits) # ['苹果', '梨', '葡萄', '橙子', '西瓜'] # 删除元素 fruits.remove("葡萄") # 删除指定元素 print(fruits) # ['苹果', '梨', '橙子', '西瓜'] # 弹出元素 last_fruit = fruits.pop() # 弹出最后一个元素并返回
print(last_fruit) # 西瓜 print(fruits) # ['苹果', '梨', '橙子'] # 列表长度 print(len(fruits)) # 3 # 列表排序 numbers = [3, 1, 4, 1, 5, 9, 2, 6] numbers.sort() # 原地排序 print(numbers) # [1, 1, 2, 3, 4, 5, 6, 9] 3.7 字典:键值对存储 # 创建字典 student = { "name": "张三", "age": 20, "courses": ["Python", "数据分析", "机器学习"] } # 访问值 print(student["name"]) # 张三 # 修改值 student["age"] = 21 # 添加键值对 student["school"] = "某大学" # 删除键值对 del student["courses"] # 安全获取值 grade = student.get("grade", "未知") # 如果键不存在,返回默认值 print(grade) # 未知 # 遍历字典 for key in student: print(f"{key}: {student[key]}") # 或者 for key, value in student.items(): print(f"{key}: {value}") 四、错误和异常处理:防止程序崩溃 try: number = int(input("请输入一个数字:")) result = 10 / number print(f"10除以{number}等于{result}") except ValueError: print("输入无效,请输入一个数字!") except ZeroDivisionError: print("不能除以零!") except: print("发生了其他错误!") finally: print("无论如何,这句话都会执行") 五、文件操作:读写超简单 # 写入文件 with open("example.txt", "w", encoding="utf-8") as file: file.write("这是第一行\n") file.write("这是第二行\n") # 读取文件 with open("example.txt", "r", encoding="utf-8") as file: content = file.read() print(content) # 逐行读取 with open("example.txt", "r", encoding="utf-8") as file: for line in file: print(line.strip()) # strip()去除换行符 提示 :使用 with
语句能自动关闭文件,即使发生异常也没关系,强烈推荐!
六、模块和包:站在巨人肩膀上
Python的强大在于丰富的第三方库。先了解如何引入:
# 导入标准库 import math print(math.sqrt(16)) # 4.0 # 导入特定函数 from math import sqrt print(sqrt(16)) # 4.0 # 导入并重命名 import math as m print(m.pi) # 3.141592653589793 # 导入全部(不推荐,可能造成命名冲突) from math import * 6.1 常用标准库 os :操作系统交互
sys :Python解释器相关
datetime :日期时间处理
random :随机数生成
json :JSON数据处理
6.2 必知第三方库 NumPy :科学计算基础
pandas :数据分析利器
matplotlib/seaborn :数据可视化
requests :HTTP请求库
BeautifulSoup :HTML解析库
Flask/Django :Web框架
scikit-learn :机器学习库
安装第三方库很简单:
pip install 库名 例如: pip install pandas
七、面向对象:进阶必学 简单理解:把数据和处理数据的方法打包在一起,形成"对象"。
class Person: # 初始化方法(构造函数) def __init__(self, name, age): self.name = name # 实例属性 self.age = age # 实例方法 def greet(self): return f"你好,我叫{self.name},今年{self.age}岁。" # 修改年龄 def have_birthday(self): self.age += 1 return f"{self.name}过生日了,现在{self.age}岁了。" # 创建实例 p1 = Person("小明", 20) p2 = Person("小红", 18) # 调用方法 print(p1.greet()) # 你好,我叫小明,今年20岁。 print(p2.greet()) # 你好,我叫小红,今年18岁。 # 修改属性 p1.name = "大明" print(p1.greet()) # 你好,我叫大明,今年20岁。 # 调用方法改变状态 print(p1.have_birthday()) # 大明过生日了,现在21岁了。 八、10个实用小技巧 8.1 列表推导式:一行代码搞定列表生成 # 生成1-10的平方列表 squares = [x**2 for x in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] # 带条件的列表推导式 even_squares = [x**2 for x in range(1, 11) if x % 2 == 0] print(even_squares) # [4, 16, 36, 64, 100] 8.2 f-string:最简洁的字符串格式化 name = "小明" age = 20 print(f"{name}今年{age}岁") # 小明今年20岁 # 格式化数字 pi = 3.1415926 print(f"圆周率是{pi:.2f}") # 圆周率是3.14 8.3 enumerate:同时获取索引和值
fruits = ["苹果", "香蕉", "橙子"] for i, fruit in enumerate(fruits): print(f"{i+1}. {fruit}") # 输出: # 1. 苹果 # 2. 香蕉 # 3. 橙子 8.4 zip:并行遍历多个列表 names = ["张三", "李四", "王五"] ages = [20, 21, 22] for name, age in zip(names, ages): print(f"{name}今年{age}岁") # 输出: # 张三今年20岁 # 李四今年21岁 # 王五今年22岁 8.5 * 解包运算符 # 列表解包 first, *rest = [1, 2, 3, 4, 5] print(first) # 1 print(rest) # [2, 3, 4, 5] # 用于函数参数 def add(*numbers): return sum(numbers) print(add(1, 2, 3)) # 6 8.6 使用collections模块简化代码 from collections import Counter # 计数器 text = "hello world hello python" word_count = Counter(text.split()) print(word_count) # Counter({'hello': 2, 'world': 1, 'python': 1}) # 默认字典 from collections import defaultdict fruit_counts = defaultdict(int) # 默认值为0 for fruit in ["苹果", "香蕉", "苹果", "梨"]: fruit_counts[fruit] += 1 print(fruit_counts) # defaultdict(, {'苹果': 2, '香蕉': 1, '梨': 1}) 8.7 使用set快速去重 numbers = [1, 2, 3, 2, 1, 4, 5, 4] unique_numbers = list(set(numbers)) print(unique_numbers) # [1, 2, 3, 4, 5](顺序可能不同) 8.8 lambda匿名函数
# 普通函数 def add(x, y): return x + y # 等价的lambda函数 add = lambda x, y: x + y # 结合列表排序 students = [("张三", 85), ("李四", 92), ("王五", 78)] students.sort(key=lambda student: student[1], reverse=True) # 按分数从高到低排序 print(students) # [('李四', 92), ('张三', 85), ('王五', 78)] 8.9 生成器表达式:节省内存 # 生成器表达式(用()而不是[]) sum_of_squares = sum(x**2 for x in range(1, 1001)) print(sum_of_squares) # 比列表推导式节省内存 8.10 使用pathlib处理文件路径 from pathlib import Path # 创建路径对象 p = Path("example") # 创建目录 p.mkdir(exist_ok=True) # 创建文件 file_path = p / "test.txt" file_path.write_text("Hello, Python!", encoding="utf-8") # 读取文件 content = file_path.read_text(encoding="utf-8") print(content) # Hello, Python! 九、常见坑位和解决方案 9.1 可变默认参数陷阱 # 错误示范 def add_item(item, list=[]): # 这里list是所有函数调用共享的! list.append(item) return list print(add_item(1)) # [1] print(add_item(2)) # [1, 2] 而不是 [2] # 正确做法 def add_item(item, list=None): if list is None: list = [] list.append(item) return list 9.2 浅拷贝vs深拷贝 import copy original = [1, [2, 3], 4] # 引用(不是拷贝) ref = original ref[0] = 9 # 原列表也变了 print(original) # [9, [2, 3], 4] # 浅拷贝 shallow = original.copy() # 或用 shallow = copy.copy(original) shallow[0] = 1 # 原列表不变 shallow[1][0] = 99 # 原列表的嵌套列表会变 print(original) # [9, [99, 3], 4] # 深拷贝 deep = copy.deepcopy(original) deep[1][1] = 88 # 原列表不变 print(original) # [9, [99, 3], 4] print(deep) # [9, [99, 88], 4]
9.3 全局变量陷阱 counter = 0 def increment(): counter += 1 # 错误!Python认为这是局部变量 def correct_increment(): global counter # 声明这是全局变量 counter += 1 # correct_increment() # 正确 9.4 字符串是不可变的 s = "hello" # s[0] = "H" # 错误!字符串不可修改 # 正确做法 s = "H" + s[1:] # 创建新字符串 print(s) # Hello 恭喜你读到这里!Python基础知识已经掌握得差不多了
Python学习是一段有趣的旅程。记住,编程能力不是一蹴而就的,需要持续实践和学习。遇到问题别怕,这是成长的机会。
希望这篇文章能帮你建立坚实的Python基础。如果有问题,欢迎在评论区留言。让我们一起在Python的海洋里遨游吧!
对Python,AI,自动化办公提效,副业发展等感兴趣的伙伴们,扫码添加逍遥,限免交流群
备注【成长交流】