Python3 基础语法详解
Python 作为一门简洁、高效且功能强大的编程语言,凭借其易读性和丰富的生态,广泛应用于数据科学、Web 开发、自动化测试等领域。本文将从基础语法出发,系统解析 Python3 的核心特性,帮助初学者快速掌握编程逻辑与代码规范。
一、变量与数据类型
1. 动态类型与强类型
Python 是动态类型(无需声明类型)且强类型(不允许隐式类型转换)的语言:
a = 10 # 整数类型
a = "hello" # 动态变为字符串类型
# a + 1 # 报错:TypeError(字符串与整数无法直接相加)
2. 基本数据类型
# 数值类型
num_int = 100 # 整数
num_float = 3.14 # 浮点数
num_complex = 1 + 2j # 复数
# 序列类型
str_val = "Python" # 字符串(不可变)
list_val = [1, 2, 3] # 列表(可变)
tuple_val = (4, 5, 6) # 元组(不可变)
# 映射类型
dict_val = {"name": "Alice", "age": 30} # 字典
# 集合类型
set_val = {1, 2, 3} # 集合(无序且唯一)
frozenset_val = frozenset({4, 5, 6}) # 不可变集合
3. 类型检查与转换
type(10) # <class 'int'>
isinstance(3.14, float) # True
# 类型转换
int("123") # 123
str(456) # "456"
list("abc") # ['a', 'b', 'c']
二、控制流语句
1. 条件语句(if-elif-else)
x = 20
if x < 10:
print("小于10")
elif x < 20:
print("小于20")
else:
print("大于等于20")
2. 循环语句
while 循环:
count = 0
while count < 3:
print(count)
count += 1
else: # 循环正常结束后执行
print("循环结束")
for 循环:
for i in range(3): # 生成 0, 1, 2
print(i)
else:
print("循环结束")
# 遍历序列
for char in "Python":
print(char)
# 遍历字典
for key, value in {"name": "Alice"}.items():
print(key, value)
3. 循环控制
for i in range(5):
if i == 3:
break # 跳出整个循环
print(i)
for i in range(5):
if i % 2 == 0:
continue # 跳过本次循环
print(i)
三、函数与参数传递
1. 函数定义与调用
def add(a, b):
"""返回两个数的和"""
return a + b
result = add(3, 5) # 8
2. 参数类型
位置参数:
def func(a, b):
return a, b
func(1, 2) # 按位置传递
关键字参数:
func(b=2, a=1) # 按名称传递
默认参数:
def greet(name="World"):
return f"Hello, {name}!"
greet() # "Hello, World!"
greet("Alice") # "Hello, Alice!"
可变参数:
def sum_all(*args): # 元组形式接收
return sum(args)
sum_all(1, 2, 3) # 6
def print_info(**kwargs): # 字典形式接收
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Bob", age=25) # 输出键值对
3. 匿名函数(lambda)
add = lambda a, b: a + b
add(3, 5) # 8
# 常用于高阶函数
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16]
四、面向对象编程
1. 类与对象
class Person:
# 类属性
species = "Homo sapiens"
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
def greet(self):
return f"Hello, I'm {self.name}, {self.age} years old."
p1 = Person("Alice", 30)
p1.greet() # "Hello, I'm Alice, 30 years old."
2. 继承与多态
class Student(Person):
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
def study(self):
return f"{self.name} is studying in grade {self.grade}."
s1 = Student("Bob", 15, 9)
s1.greet() # 继承自父类的方法
s1.study() # "Bob is studying in grade 9."
3. 特殊方法(Magic Methods)
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other): # 重载 + 运算符
return Vector(self.x + other.x, self.y + other.y)
def __str__(self): # 定义字符串表示
return f"Vector({self.x}, {self.y})"
v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2 # 调用 __add__ 方法
print(v3) # 调用 __str__ 方法,输出 "Vector(4, 6)"
五、模块与包管理
1. 模块导入
import math # 导入整个模块
math.sqrt(16) # 4.0
from math import pi # 导入特定成员
print(pi) # 3.141592653589793
from math import * # 导入所有成员(不推荐,可能导致命名冲突)
sin(pi/2) # 1.0
import math as m # 导入并取别名
m.cos(0) # 1.0
2. 创建模块
my_module.py:
def say_hello():
return "Hello from my module!"
PI = 3.14
main.py:
from my_module import say_hello, PI
print(say_hello()) # "Hello from my module!"
print(PI) # 3.14
3. 包结构
my_package/
__init__.py # 包标识文件(Python 3 中可为空)
module1.py
module2.py
subpackage/
__init__.py
module3.py
导入方式:
from my_package import module1
from my_package.subpackage import module3
六、异常处理
1. 基本异常捕获
try:
num = int("abc") # 触发 ValueError
except ValueError as e:
print(f"错误:{e}") # 输出:"错误:invalid literal for int() with base 10: 'abc'"
else:
print("没有发生异常")
finally:
print("无论是否异常都会执行")
2. 自定义异常
class MyError(Exception):
def __init__(self, message):
self.message = message
def divide(a, b):
if b == 0:
raise MyError("除数不能为零")
return a / b
try:
result = divide(10, 0)
except MyError as e:
print(f"自定义错误:{e.message}")
七、文件操作
1. 文件读写
# 写入文件
with open("test.txt", "w", encoding="utf-8") as f:
f.write("Hello, Python!\n")
f.write("第二行内容")
# 读取文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 读取全部内容
lines = f.readlines() # 读取所有行(返回列表)
line = f.readline() # 读取一行
2. 文件模式
| 模式 | 说明 |
|---|---|
r |
读取(默认) |
w |
写入(覆盖现有文件) |
a |
追加 |
b |
二进制模式 |
+ |
读写模式(如 r+, w+) |
八、最佳实践与常见误区
1. 代码风格
- 使用 4 个空格缩进(而非 Tab)。
- 变量名用小写字母加下划线(snake_case)。
- 类名用大驼峰(CamelCase)。
2. 避免常见错误
# 错误:可变默认参数
def add_item(item, lst=[]): # 错误!默认参数在函数定义时创建
lst.append(item)
return lst
# 正确:使用 None 作为默认值
def add_item(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst
3. 性能优化
- 使用列表推导式替代显式循环:
squares = [x**2 for x in range(10)] # 比传统循环快约 30% - 使用集合进行成员检查(时间复杂度 O (1)):
items = {1, 2, 3} if 2 in items: # 比列表快得多 pass
九、总结
Python3 的基础语法设计简洁而灵活,通过动态类型、面向对象特性和丰富的内置数据结构,为开发者提供了高效的编程体验。掌握变量类型、控制流、函数与类的使用,是迈向 Python 进阶之路的关键
浙公网安备 33010602011771号