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 进阶之路的关键

posted on 2025-11-11 08:41  小陶coding  阅读(86)  评论(0)    收藏  举报