Python 是一门广泛使用的编程语言,适合从小项目到大规模应用开发。本文介绍 Python 的基本语法和一些实用的编程技巧,适合初学者与开发人员。为了方便大家理解,有些例子采用两种写法,一种采用的是英文变量名,另一种则采用中文变量名,以便于大家理解
1. 数据类型
Python 支持多种基本数据类型,如整数、浮点数、复数、字符串、列表、元组、集合和字典。
英文代码:
python"># 整数
int_value = 20 # int
# 浮点数
float_value = 5.5 # float
# 复数
complex_value = 4 + 2j # complex# 字符串
single_line_str = "Python"
multi_line_str = """This is a
multi-line string."""# 列表(可变的有序集合)
sample_list = [2, 4, 6, 'eight', 10.0]# 元组(不可变的有序集合)
sample_tuple = (3, 6, 9, 'twelve', 15.0)# 集合(无序且不重复的元素集合)
sample_set = {1, 3, 5, 7, 9}# 字典(键值对集合)
sample_dict = {'name': 'John', 'age': 24, 'city': 'Beijing'}
中文代码
python"># 整数
整数变量 = 20 # int
# 浮点数
浮点数变量 = 5.5 # float
# 复数
复数变量 = 4 + 2j # complex# 字符串
单行字符串 = "Python"
多行字符串 = """这是一段
多行文本"""# 列表(可变的有序集合)
列表示例 = [2, 4, 6, '八', 10.0]# 元组(不可变的有序集合)
元组示例 = (3, 6, 9, '十二', 15.0)# 集合(无序且不重复的元素集合)
集合示例 = {1, 3, 5, 7, 9}# 字典(键值对集合)
字典示例 = {'姓名': '张三', '年龄': 24, '城市': '北京'}
2. 控制流语句
条件语句
Python 提供了 if-elif-else
语句来控制条件逻辑:
python">x = 15
if x > 0:print("正数")
elif x == 0:print("零")
else:print("负数")
循环语句
for 循环
遍历一个范围内的数字或一个集合:
python"># 遍历数字 0 到 4
for num in range(5):print(num)
while 循环
在条件为真时重复执行代码块:
python">counter = 0
while counter < 5:print(counter)counter += 1
跳转语句
- break 终止循环
- continue 跳过当前迭代
- pass 占位,不执行任何操作
3. 函数
函数在 Python 中使用 def 定义:
英文代码:
python">def greet(name):"""输出问候语"""return f"Hello, {name}!"
print(greet("John"))
中文代码:
python">def 问候(名字):"""输出问候语"""return f"你好,{名字}!"
print(问候("张三"))
支持位置参数、关键字参数、默认参数和可变参数:
python">def add(num1, num2=5):return num1 + num2def mulnumber(*num_list): # 接受多个参数result = 1for num in num_list:result *= numreturn result
4. 模块与包
模块与包扩展了 Python 的功能,可以导入标准模块或创建自定义模块:
python"># 导入模块
import math
from datetime import datetimeprint(math.sqrt(25)) # 输出 5.0
print(datetime.now()) # 输出当前时间
5. 异常处理
Python 使用 try-except-else-finally
语句来处理异常:
python">try:x = 10 / 0
except ZeroDivisionError:print("除数不能为零!")
else:print("无异常")
finally:print("执行结束")
6. 文件操作
文件读写操作通过 with open 语句更安全:
英文代码:
python"># 写入文件
with open('sample.txt', 'w') as file:file.write("This is a sample file.")# 读取文件
with open('sample.txt', 'r') as file:content = file.read()print(content)
中文代码:
python"># 写入文件
with open('示例.txt', 'w') as 文件:文件.write("这是一个示例文件。")# 读取文件
with open('示例.txt', 'r') as 文件:内容 = 文件.read()print(内容)
7. 类和对象
Python 使用 class 定义类,并支持继承和多态:
英文代码:
python">class Person:"""定义一个基本类"""def __init__(self, name, age):self.name = nameself.age = agedef introduce(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")# 继承
class Student(Person):def __init__(self, name, age, student_id):super().__init__(name, age)self.student_id = student_iddef study(self):print(f"{self.name} is studying.")student_a = Student("Mike", 18, "2024001")
student_a.introduce()
student_a.study()
中文代码:
python">class 人:"""定义一个基本类"""def __init__(self, 姓名, 年龄):self.姓名 = 姓名self.年龄 = 年龄def 自我介绍(self):print(f"你好,我是{self.姓名},年龄{self.年龄}。")# 继承
class 学生(人):def __init__(self, 姓名, 年龄, 学号):super().__init__(姓名, 年龄)self.学号 = 学号def 学习(self):print(f"{self.姓名}正在学习。")学生A = 学生("李四", 18, "2024001")
学生A.自我介绍()
学生A.学习()
8. 装饰器
装饰器用于增强函数或方法的行为:
英文代码:
python">def print_message(func):def wrapper(*args, **kwargs):print("Before calling function")result = func(*args, **kwargs)print("After calling function")return resultreturn wrapper@print_message
def say_hello(name):print(f"Hello, {name}!")say_hello("Tom")
中文代码:
python">def 打印消息(函数):def 包装器(*args, **kwargs):print("调用前")结果 = 函数(*args, **kwargs)print("调用后")return 结果return 包装器@打印消息
def 打招呼(名字):print(f"你好,{名字}!")打招呼("小明")
9. 文件和目录操作
可以通过 os
和 sys
模块获取系统信息或操作文件系统:
python">import os
import sysprint("当前工作目录:", os.getcwd())
print("命令行参数:", sys.argv)
10. 数据处理与可视化
通过第三方库如 pandas 和 matplotlib,可以进行数据处理与可视化:
英文代码:
python">import pandas as pd
import matplotlib.pyplot as pltdata = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 32, 18]
}
df = pd.DataFrame(data)
print(df)df.plot(kind='bar', x='Name', y='Age', title="Age Comparison")
plt.show()
中文代码:
python">import pandas as pd
import matplotlib.pyplot as plt数据 = {'姓名': ['李四', '王五', '张三'],'年龄': [25, 32, 18]
}
数据框 = pd.DataFrame(数据)
print(数据框)数据框.plot(kind='bar', x='姓名', y='年龄', title="年龄对比")
plt.show()
11. 迭代器和生成器
迭代器
迭代器实现 __iter__() 和 __next__() 方法来生成序列。
python">class CustomIterator:def __init__(self, max_value):self.max_value = max_valueself.current = 0def __iter__(self):return selfdef __next__(self):if self.current < self.max_value:value = self.currentself.current += 1return valueelse:raise StopIterationfor num in CustomIterator(5):print(num)
生成器
使用 yield 关键字定义生成器函数:
python">def custom_generator(max_value):current = 0while current < max_value:yield currentcurrent += 1for num in custom_generator(5):print(num)
12. 上下文管理器
使用 with 语句可以更方便地管理资源。自定义上下文管理器需实现 __enter__() 和 __exit__() 方法:
python">class ResourceHandler:def __enter__(self):print("Resource acquired")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("Resource released")def do_task(self):print("Performing a task with the resource")with ResourceHandler() as resource:resource.do_task()
还可以使用 contextlib 模块提供的 @contextmanager 装饰器简化上下文管理器的编写:
python">from contextlib import contextmanager@contextmanager
def managed_resource():print("Resource acquired")try:yieldfinally:print("Resource released")with managed_resource():print("Performing a task with the resource")
13. 装饰器的高级用法
带参数的装饰器
使用嵌套函数实现带参数的装饰器。
python">def repeat(times):def decorator(func):def wrapper(*args, **kwargs):for _ in range(times):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator@repeat(3)
def greet(name):print(f"Hello, {name}!")greet("Alice")
类装饰器
类也可以用作装饰器,实现 __call__
方法即可。
class DebugDecorator:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):print(f"Calling {self.func.__name__} with args: {args}, kwargs: {kwargs}")result = self.func(*args, **kwargs)print(f"{self.func.__name__} returned: {result}")return result@DebugDecorator
def add(a, b):return a + badd(5, 3)
14. 类型注解
Python 通过类型注解提高代码可读性并支持静态类型检查。
python">from typing import List, Dict, Tuple, Optionaldef greet(name: str) -> str:return f"Hello, {name}!"def get_names() -> List[str]:return ["Alice", "Bob", "Charlie"]def get_info() -> Dict[str, int]:return {"Alice": 25, "Bob": 30, "Charlie": 35}def process_data(data: Tuple[int, str, float]) -> None:num, name, score = dataprint(f"Number: {num}, Name: {name}, Score: {score}")def find_person(people: List[Dict[str, str]], name: str) -> Optional[Dict[str, str]]:for person in people:if person['name'] == name:return personreturn None
15. 设计模式
单例模式
确保类只有一个实例,并提供一个全局访问点:
python">class Singleton:_instance = None@staticmethoddef get_instance():if Singleton._instance is None:Singleton._instance = Singleton()return Singleton._instancedef __init__(self):if Singleton._instance is not None:raise Exception("This class is a singleton!")else:Singleton._instance = self# 使用单例
singleton1 = Singleton.get_instance()
singleton2 = Singleton.get_instance()
print(singleton1 is singleton2) # 输出 True
工厂模式
为对象创建提供接口,而不显露创建逻辑。
python">from abc import ABC, abstractmethodclass Product(ABC):@abstractmethoddef use(self):passclass ConcreteProductA(Product):def use(self):print("Using ConcreteProductA")class ConcreteProductB(Product):def use(self):print("Using ConcreteProductB")class Factory:@staticmethoddef create_product(product_type: str) -> Product:if product_type == "A":return ConcreteProductA()elif product_type == "B":return ConcreteProductB()else:raise ValueError("Invalid product type")# 使用工厂
product_a = Factory.create_product("A")
product_b = Factory.create_product("B")
product_a.use()
product_b.use()
16. 其他实用技巧
枚举
使用 enum 模块定义枚举类型:
python">from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3print(Color.RED) # 输出 Color.RED
print(Color.RED.name) # 输出 "RED"
print(Color.RED.value) # 输出 1
数据类
使用 dataclasses 模块简化数据类的定义:
python">from dataclasses import dataclass@dataclass
class Person:name: strage: intcity: strperson = Person(name="Alice", age=30, city="New York")
print(person) # 输出 "Person(name='Alice', age=30, city='New York')"
这些高级特性和设计模式有助于编写更高效和结构化的代码。无论是类的单例模式,还是装饰器和上下文管理器,都可以大大提升 Python 应用的可读性和可维护性。Python 的灵活性使其成为初学者和资深开发者的理想选择。
结语
Python 提供了简洁而强大的语法结构和丰富的标准库,加上社区中的第三方库,Python 几乎可以适应任何编程需求。这篇文章涵盖了 Python 的基础语法与实用技巧,适合初学者和有经验的开发人员快速上手或复习。有些复杂的代码中添加了中文变量代码和英文变量代码,可以对照着看,理解起来就会更快。