目录

1. Python 简介

Python 是一种广泛使用的解释型、高级编程语言,由 Guido van Rossum 在 1991 年首次发布。Python 的设计哲学强调代码的可读性和简洁性,使用缩进来划分代码块,摒弃了其他语言中常见的大括号和分号,让代码看起来更干净、更自然。

Python 目前稳居 TIOBE 编程语言排行榜前列,其应用场景非常广泛:

  • Web 开发:Django、Flask、FastAPI 等框架让后端开发变得高效便捷。
  • 数据科学:Pandas、NumPy、Matplotlib 等库是数据分析与可视化的利器。
  • 人工智能 / 机器学习:TensorFlow、PyTorch、Scikit-learn 等框架支撑着从学术研究到工业落地的 AI 应用。
  • 自动化运维:脚本编写、系统管理、CI/CD 流水线中 Python 随处可见。
  • 网络爬虫:Requests、Scrapy、BeautifulSoup 等工具让数据采集变得简单。

Python 的社区生态极为活跃,PyPI(Python Package Index)上托管了超过 40 万个第三方包,几乎所有你能想到的需求,都能找到现成的库来加速开发。

2. 环境搭建

2.1 安装 Python

前往 python.org 下载对应操作系统的安装包,推荐选择 Python 3.10 或更高版本。安装时的注意事项:

  • Windows 用户:务必勾选 Add Python to PATH 选项,否则后续在命令行中无法直接使用 python 命令。建议选择 “Customize installation” 自定义安装路径,避免路径中包含空格或中文字符。
  • macOS 用户:系统自带 Python 2.7(已过时),建议通过 Homebrew 安装:brew install python@3.12,或直接下载官方 pkg 安装包。
  • Linux 用户:多数发行版已预装 Python 3,可通过包管理器升级,如 Ubuntu:sudo apt install python3.12

安装完成后,在终端中验证:

python --version
# 或
python3 --version

同时检查 pip(Python 包管理工具)是否可用:

pip --version
# 或
pip3 --version

2.2 选择编辑器

推荐以下主流编辑器,按使用场景选择:

  • Visual Studio Code(免费、跨平台):安装 Python 扩展后即可获得语法高亮、智能提示、调试支持、Jupyter Notebook 集成等强大功能,是大多数开发者的首选。
  • PyCharm(社区版免费):JetBrains 出品,功能全面,特别适合大型项目开发,提供强大的代码补全、重构和调试工具。
  • Jupyter Notebook / JupyterLab:交互式编程环境,适合数据科学、教学和原型验证,可分段执行代码并实时查看结果。
  • IDLE:Python 官方自带的简易编辑器,适合初学者快速上手,但功能相对有限。

建议初学者从 VS Code + Python 扩展 组合开始,轻量且强大,后续可根据需求切换到 PyCharm 等专业 IDE。

3. 第一个 Python 程序

创建 hello.py 文件,写入以下代码:

print("Hello, World!")

运行方式有多种:

  • 命令行运行:在终端中执行 python hello.py,你会看到输出 Hello, World!
  • IDE 中运行:在 VS Code 或 PyCharm 中打开文件,点击右上角的运行按钮。
  • 交互式环境:在终端输入 python 进入交互模式,直接输入 print("Hello, World!") 回车即可看到结果。

输出 Hello, World! 标志着 Python 环境配置成功。这个简单的程序背后,Python 解释器完成了词法分析、语法解析、编译成字节码、再由虚拟机执行等一系列步骤,但对于初学者来说,只需关注代码本身即可。

4. 变量与数据类型

4.1 变量赋值

Python 是动态类型语言,变量无需声明类型,类型由赋值时自动推断:

name = "Alice"      # 字符串
age = 25            # 整数
height = 1.68       # 浮点数
is_student = True   # 布尔值

Python 变量命名遵循以下规则:

  • 只能包含字母、数字和下划线,不能以数字开头。
  • 区分大小写,nameName 是两个不同的变量。
  • 不能使用 Python 关键字(如 ifforclass 等)作为变量名。
  • 推荐使用蛇形命名法(snake_case),如 user_namemax_value

Python 还支持多重赋值,一行代码交换值:

a, b = 10, 20
a, b = b, a   # 交换后 a=20, b=10

4.2 基本数据类型

类型 示例 说明
整数 int 42 任意精度整数,Python 3 中无大小限制
浮点数 float 3.14 双精度浮点数,遵循 IEEE 754 标准
字符串 str "hello" Unicode 字符串,支持单引号或双引号
布尔值 bool True / False 逻辑值,注意首字母大写
空值 NoneType None 表示无值,类似其他语言的 null

使用 type() 函数查看变量类型:

print(type(age))      # <class 'int'>
print(type(name))     # <class 'str'>
print(type(height))   # <class 'float'>

类型转换函数:

int("42")      # 字符串 → 整数:42
float("3.14")  # 字符串 → 浮点数:3.14
str(100)       # 数字 → 字符串:"100"
bool(1)        # 非零值 → True

5. 运算符

5.1 算术运算符

a = 10
b = 3
print(a + b)    # 13(加法)
print(a - b)    # 7(减法)
print(a * b)    # 30(乘法)
print(a / b)    # 3.333...(除法,结果是浮点数)
print(a // b)   # 3(整除,向下取整)
print(a % b)    # 1(取余)
print(a ** b)   # 1000(幂运算,10 的 3 次方)

补充说明:

  • / 总是返回浮点数,即使两个整数相除。
  • // 整除向下取整:-10 // 3 结果为 -4(而非 -3)。
  • ** 优先级高于其他算术运算符,2 ** 3 ** 2 等价于 2 ** 9 = 512(右结合)。

5.2 比较与逻辑运算符

x = 5
y = 10
print(x == y)              # False(等于)
print(x != y)              # True(不等于)
print(x < y)               # True(小于)
print(x > 0 and y < 20)    # True(逻辑与)
print(x > 0 or y < 0)      # True(逻辑或)
print(not x > 0)           # False(逻辑非)

赋值运算符(复合赋值):

n = 10
n += 5    # 等价于 n = n + 5
n *= 2    # 等价于 n = n * 2
n //= 3   # 等价于 n = n // 3

6. 控制流

6.1 条件语句

score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(f"成绩等级:{grade}")

注意事项:

  • ifelif 后面必须跟条件表达式,以冒号结尾。
  • Python 使用缩进(通常 4 个空格)来表示代码块,同级缩进的代码属于同一代码块。
  • 条件表达式支持链式比较:80 <= score < 90 等价于 score >= 80 and score < 90
  • 如果某个分支暂时不需要处理,可以用 pass 占位,避免语法错误。

6.2 循环语句

for 循环

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# 使用 range() 生成数字序列
for i in range(5):
    print(i)   # 输出 0,1,2,3,4

# range(start, stop, step)
for i in range(1, 10, 2):
    print(i)   # 输出 1,3,5,7,9

while 循环

count = 0
while count < 5:
    print(count)
    count += 1

循环控制关键字:

  • break:立即跳出当前循环,不再执行后续迭代。
  • continue:跳过当前迭代的剩余代码,进入下一次循环。
  • else:循环正常结束(未触发 break)时执行。
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("循环正常结束")  # 不会执行,因为 break 跳出了循环

7. 函数

使用 def 关键字定义函数:

def greet(name, greeting="Hello"):
    """向用户打招呼的函数"""
    return f"{greeting}, {name}!"

print(greet("Alice"))              # Hello, Alice!
print(greet("Bob", "Hi"))          # Hi, Bob!

Python 函数支持多种参数类型:

  • 位置参数:按顺序传入,如 greet("Alice", "Hi")
  • 默认参数:在定义时给出默认值,调用时可省略,如 greeting="Hello"
  • 关键字参数:通过参数名指定,可打乱顺序,如 greet(greeting="Hi", name="Bob")
  • 可变参数*args 接收任意数量的位置参数,**kwargs 接收任意数量的关键字参数。
def add_all(*args):
    """计算任意数量数字的和"""
    return sum(args)

print(add_all(1, 2, 3, 4, 5))  # 15

def print_info(**kwargs):
    """打印任意键值对"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="Shanghai")

匿名函数(lambda):

square = lambda x: x ** 2
print(square(5))  # 25

# 常用于排序等场景
students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
students.sort(key=lambda s: s[1])  # 按成绩排序

8. 数据结构

8.1 列表(list)

列表是 Python 中最常用的可变序列,可以存储任意类型的元素:

numbers = [1, 2, 3, 4, 5]
numbers.append(6)          # 末尾追加
numbers.insert(0, 0)       # 指定位置插入
print(numbers[1:4])        # 切片:[1, 2, 3]
print(numbers[-1])         # 倒数第一个元素:6
numbers.remove(3)          # 删除指定值
popped = numbers.pop()     # 弹出末尾元素

列表推导式(List Comprehension)是 Python 的一大特色,能简洁地生成新列表:

squares = [x ** 2 for x in range(10)]       # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
evens = [x for x in range(20) if x % 2 == 0]  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

8.2 元组(tuple)

元组是不可变的序列,定义后元素不能修改:

point = (3, 4)
print(point[0])   # 3
x, y = point      # 元组解包
print(x, y)       # 3 4

元组常用于:

  • 存储不应被修改的数据(如坐标、配置项)。
  • 作为字典的键(因为元组是可哈希的)。
  • 从函数返回多个值。
def get_user_info():
    return "Alice", 25, "alice@example.com"  # 返回元组

name, age, email = get_user_info()

8.3 字典(dict)

字典是键值对集合,在 Python 3.7+ 中保持插入顺序:

person = {"name": "Alice", "age": 25}
print(person["name"])          # Alice
person["city"] = "Shanghai"    # 添加键值对
person.get("gender", "未知")    # 安全获取,不存在时返回默认值

字典常用方法:

person.keys()      # dict_keys(['name', 'age', 'city'])
person.values()    # dict_values(['Alice', 25, 'Shanghai'])
person.items()     # dict_items([('name', 'Alice'), ...])

for key, value in person.items():
    print(f"{key}: {value}")

字典推导式:

squares_dict = {x: x ** 2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

8.4 集合(set)

集合是无序的不重复元素集合,基于哈希表实现:

a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)   # {2, 3}(交集)
print(a | b)   # {1, 2, 3, 4}(并集)
print(a - b)   # {1}(差集)
print(a ^ b)   # {1, 4}(对称差集)

集合常用于去重:

nums = [1, 2, 2, 3, 3, 3, 4]
unique = set(nums)  # {1, 2, 3, 4}

9. 模块与包

9.1 导入模块

import math
print(math.sqrt(16))   # 4.0

from datetime import datetime
print(datetime.now())

# 使用别名
import numpy as np
arr = np.array([1, 2, 3])

常用的标准库模块:

模块 用途
os 操作系统接口,文件路径操作
sys 系统相关参数和函数
math 数学函数
random 生成随机数
datetime 日期和时间处理
json JSON 数据编解码
re 正则表达式
collections 高级数据结构(如 Counter、defaultdict)

9.2 自定义模块

将代码保存为 my_module.py,在同一目录下通过 import my_module 引用。模块中的函数和变量可以通过 my_module.xxx 访问。

如果模块中包含了 if __name__ == "__main__": 代码块,当该文件被直接运行时,该代码块会执行;当被导入时,则不会执行:

# my_module.py
def hello():
    print("Hello from my_module!")

if __name__ == "__main__":
    hello()  # 只在直接运行时执行

10. 文件操作

Python 使用 open() 函数读写文件,推荐配合 with 语句自动管理资源,无需手动关闭文件:

# 写入文件
with open("test.txt", "w", encoding="utf-8") as f:
    f.write("Hello, Python!\n")
    f.write("第二行内容\n")

# 读取文件
with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

# 按行读取
with open("test.txt", "r", encoding="utf-8") as f:
    for line in f:
        print(line.strip())  # strip() 去除行尾换行符

常用文件模式:

模式 说明
r 只读,文件必须存在
w 写入,清空已有内容,文件不存在则创建
a 追加,在文件末尾添加内容
rb 二进制只读
wb 二进制写入
r+ 读写模式,文件必须存在

处理 JSON 文件:

import json

data = {"name": "Alice", "age": 25}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

with open("data.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
    print(loaded)  # {'name': 'Alice', 'age': 25}

11. 异常处理

使用 try...except 捕获异常,避免程序崩溃:

try:
    num = int(input("请输入一个数字:"))
    result = 10 / num
except ValueError:
    print("输入的不是有效数字")
except ZeroDivisionError:
    print("除数不能为零")
except Exception as e:
    print(f"发生未知错误:{e}")
else:
    print(f"计算结果是:{result}")
finally:
    print("程序执行完毕")

结构说明:

  • try:放置可能引发异常的代码。
  • except:捕获特定类型异常并处理,可以写多个 except 捕获不同异常。
  • else:在无异常时执行,适合放正常逻辑。
  • finally:无论是否异常都会执行,通常用于释放资源、关闭连接等。

自定义异常:

class InvalidAgeError(Exception):
    """自定义异常:年龄不合法"""
    pass

def set_age(age):
    if age < 0 or age > 150:
        raise InvalidAgeError(f"年龄 {age} 不合法")
    print(f"年龄设置为 {age}")

try:
    set_age(-1)
except InvalidAgeError as e:
    print(e)

12. 总结

本文从 Python 简介、环境搭建、基础语法、控制流、函数、数据结构、模块与包、文件操作到异常处理,系统梳理了 Python 的核心语法知识。掌握了这些内容,你已经具备了编写实用脚本的能力。

下一步学习建议:

  • 面向对象编程(OOP):类、对象、继承、多态。
  • 常用标准库ossysredatetimecollections 等。
  • 第三方库:根据兴趣方向选择,如数据分析(Pandas)、Web 开发(Flask/Django)、爬虫(Requests/Scrapy)。
  • 项目实战:通过实际项目巩固所学,如编写一个命令行工具、一个简单的 Web 应用或一个数据分析脚本。

多动手写代码是快速进步的最佳方式,祝你在 Python 学习之路上越走越远!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐