前言
Python 是一门简洁、优雅且功能强大的编程语言,被广泛应用于数据分析、人工智能、Web开发、自动化脚本、爬虫、游戏开发等多个领域。根据 TIOBE 指数,Python 近年来稳居编程语言排行榜前列。
本篇博文将带你从零开始,系统学习 Python 的基础语法,并通过大量代码示例帮助你快速上手。无论你是完全的编程小白,还是有其他语言经验的开发者,都能在这里找到你需要的内容。
1. 标识符 (Identifiers)
标识符是变量、函数、类、模块等的名称。
命名规则:
- 只能包含字母、数字、下划线
_
- 不能以数字开头
- 区分大小写
- 不能使用关键字
python
# 正确的标识符
user_name = "Alice"
age = 25
_total_score = 100
PI = 3.14159
# 错误的标识符(会报错)
# 2user = "Bob" # 以数字开头
# user-name = "Tom" # 包含非法字符 -
# class = "Python" # class 是关键字
2. 关键字 (Keywords)
Python 有 35 个保留关键字,不能用作标识符。
python
import keyword
print(keyword.kwlist)
输出:
XML
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3. 引号 (Quotes)
Python 使用单引号 '
、双引号 "
、三引号 '''
或 """
表示字符串。
python
# 单引号
name = 'Alice'
# 双引号
greeting = "Hello, World!"
# 三引号(支持多行)
poem = """
春风又绿江南岸,
明月何时照我还?
"""
# 引号嵌套
sentence = 'He said, "Hello!"'
sentence2 = "It's a beautiful day."
print(name, greeting)
print(poem)
4. 编码 (Encoding)
Python 3 默认使用 UTF-8 编码,支持中文等字符。
python
# 文件开头通常不需要指定编码(Python 3 默认 UTF-8)
# 但如果你的编辑器有问题,可以加上:
# -*- coding: utf-8 -*-
chinese = "你好,Python!"
print(chinese) # 输出:你好,Python!
5. 输入输出 (I/O)
输出:print()
python
print("Hello, World!")
print(123)
print(3.14)
print(True)
# 多个值输出(用空格分隔)
print("姓名:", "张三", "年龄:", 20)
# 格式化输出
name = "李四"
age = 25
print(f"我的名字是 {name},今年 {age} 岁。") # f-string(推荐)
print("我的名字是 %s,今年 %d 岁。" % (name, age)) # 旧式格式化
print("我的名字是 {},今年 {} 岁。".format(name, age)) # format 方法
输入:input()
python
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:")) # 注意:input 返回字符串,需要转换
print(f"你好,{name}!你今年 {age} 岁。")
6. 缩进 (Indentation)
Python 使用缩进来表示代码块,必须使用一致的缩进(通常4个空格)。
python
if True:
print("这是缩进的代码块")
if 5 > 3:
print("嵌套缩进")
else:
print("否则执行这里")
⚠️ 警告:不要混用 Tab 和空格!建议在编辑器中设置为"显示空白字符"。
7. 多行 (Multi-line)
多行语句
python
# 方法1:反斜杠 \
total = 1 + 2 + 3 + \
4 + 5 + 6
# 方法2:括号内自动续行
total = (1 + 2 + 3 +
4 + 5 + 6)
# 多行字符串
long_string = """
这是一个
很长的
字符串
"""
8. 注释 (Comments)
python
# 这是单行注释
"""
这是多行注释(实际上是一个多行字符串)
通常用于函数或模块的说明
"""
'''
也可以使用三个单引号
'''
def add(a, b):
"""
这是一个函数的文档字符串(docstring)
返回两个数的和
"""
return a + b
9. 数据类型 (Data Types)
常见数据类型
python
# 整数 int
a = 10
print(type(a)) # <class 'int'>
# 浮点数 float
b = 3.14
print(type(b)) # <class 'float'>
# 布尔值 bool
c = True
d = False
print(type(c)) # <class 'bool'>
# 字符串 str
e = "Python"
print(type(e)) # <class 'str'>
# 列表 list
f = [1, 2, 3, "hello"]
print(type(f)) # <class 'list'>
# 元组 tuple
g = (1, 2, 3)
print(type(g)) # <class 'tuple'>
# 字典 dict
h = {"name": "Alice", "age": 25}
print(type(h)) # <class 'dict'>
# 集合 set
i = {1, 2, 3}
print(type(i)) # <class 'set'>
类型转换
python
# 转换为整数
num_str = "123"
num_int = int(num_str)
# 转换为浮点数
num_float = float("3.14")
# 转换为字符串
str_num = str(100)
# 转换为布尔值
bool_val = bool(0) # False
bool_val2 = bool(1) # True
print(num_int, num_float, str_num, bool_val)
10. 运算符 (Operators)
10.1 常用运算符
python
# 算术运算符
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 (幂)
# 比较运算符
print(a > b) # True
print(a == b) # False
print(a != b) # True
# 逻辑运算符
x = True
y = False
print(x and y) # False
print(x or y) # True
print(not x) # False
# 赋值运算符
c = 5
c += 3 # 等价于 c = c + 3
print(c) # 8
# 成员运算符
my_list = [1, 2, 3, 4]
print(3 in my_list) # True
print(5 not in my_list) # True
# 身份运算符
a = [1, 2]
b = [1, 2]
print(a is b) # False (不是同一个对象)
print(a == b) # True (值相等)
10.2 运算符优先级
优先级从高到低:
()
括号**
幂*
,/
,//
,%
乘除+
,-
加减==
,!=
,<
,<=
,>
,>=
比较not
逻辑非and
逻辑与or
逻辑或
python
result = 2 + 3 * 4 # 先乘后加,结果为 14
result2 = (2 + 3) * 4 # 先加后乘,结果为 20
print(result, result2)
基础:控制结构
条件语句
python
age = 18
if age < 18:
print("未成年人")
elif age >= 18 and age < 60:
print("成年人")
else:
print("老年人")
循环语句
for
循环
python
# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 遍历数字范围
for i in range(5):
print(i) # 输出 0,1,2,3,4
# 遍历字符串
for char in "Python":
print(char)
while
循环
python
count = 0
while count < 5:
print(count)
count += 1
进阶:函数与模块
定义函数
python
def greet(name):
"""打招呼函数"""
return f"Hello, {name}!"
# 调用函数
print(greet("Alice"))
# 带默认参数
def power(x, n=2):
return x ** n
print(power(3)) # 9
print(power(3, 3)) # 27
导入模块
python
import math
print(math.sqrt(16)) # 4.0
from random import randint
print(randint(1, 10)) # 随机生成 1-10 的整数
爬虫:使用 requests
和 BeautifulSoup
需要先安装:
pip install requests beautifulsoup4
python
import requests
from bs4 import BeautifulSoup
# 获取网页内容
url = "https://httpbin.org/get"
response = requests.get(url)
print(response.status_code) # 200
print(response.json()) # JSON 响应
# 简单解析 HTML
html = """
<html>
<body>
<h1>欢迎</h1>
<p>这是一段文本</p>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.h1.text) # 欢迎
print(soup.p.text) # 这是一段文本
自动化:文件操作与定时任务
文件读写
python
# 写入文件
with open("test.txt", "w", encoding="utf-8") as f:
f.write("你好,世界!\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())
自动化脚本示例:批量重命名文件
python
import os
def batch_rename(folder_path, prefix):
"""批量重命名文件"""
for i, filename in enumerate(os.listdir(folder_path)):
old_path = os.path.join(folder_path, filename)
if os.path.isfile(old_path):
new_name = f"{prefix}_{i+1}.txt"
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
print(f"重命名: {filename} -> {new_name}")
# 使用示例(请确保目录存在)
# batch_rename("./test_files", "doc")
数据分析:使用 pandas
安装:
pip install pandas
python
import pandas as pd
# 创建 DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [20, 25, 30],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print(df)
# 基本操作
print(df.head()) # 前几行
print(df['年龄'].mean()) # 年龄平均值
print(df[df['年龄'] > 22]) # 筛选
编写小游戏:猜数字
python
import random
def guess_number():
number = random.randint(1, 100)
attempts = 0
print("我想了一个1到100之间的数字,你来猜猜看!")
while True:
try:
guess = int(input("请输入你的猜测:"))
attempts += 1
if guess < number:
print("太小了!")
elif guess > number:
print("太大了!")
else:
print(f"恭喜你,猜对了!数字是 {number}")
print(f"你一共猜了 {attempts} 次。")
break
except ValueError:
print("请输入一个有效的数字!")
# 运行游戏
# guess_number()
趣味 Python:有趣的代码片段
1. 一行代码实现斐波那契数列
fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2) print([fib(i) for i in range(10)]) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
python
- 只能包含字母、数字、下划线
_
- 不能以数字开头
- 区分大小
- 不能使用关键字
python
# 正确的标识符
user_name = "Alice"
age = 25
_total_score = 100
PI = 3.14159
# 错误的标识符(会报错)
# 2user = "Bob" # 以数字开头
# user-name = "Tom" # 包含非法字符 -
# class = "Python" # class 是关键字
2. 彩色输出(ANSI 转义码)
python
print("\033[91m这是红色文字\033[0m")
print("\033[92m这是绿色文字\033[0m")
print("\033[94m这是蓝色文字\033[0m")