基本语法
1. Python 基本结构 Python 是一种解释型语言,代码按行执行,无需编译。
简单示例
注释 :使用 #
表示单行注释,多行注释使用三引号 '''
或 """
。
2. 变量与数据类型 变量 Python 是动态类型语言,不需要声明变量类型。
1 2 3 4 x = 10 y = 3.14 name = "Alice" is_valid = True
常用数据类型
数字类型:int
(整数),float
(浮点数),complex
(复数)
布尔值:True
,False
字符串:str
容器类型:list
(列表),tuple
(元组),dict
(字典),set
(集合)
3. 输入输出 输入 1 2 name = input ("请输入你的名字: " ) print (f"你好, {name} " )
输出 1 2 3 age = 25 print ("年龄:" , age) print (f"年龄: {age} " )
4. 条件语句 if-elif-else 1 2 3 4 5 6 7 x = 10 if x > 0 : print ("x 是正数" ) elif x == 0 : print ("x 是零" ) else : print ("x 是负数" )
5. 循环语句 for 循环 1 2 for i in range (1 , 6 ): print (i)
while 循环 1 2 3 4 x = 5 while x > 0 : print (x) x -= 1
循环控制
break
:终止循环
continue
:跳过当前迭代
1 2 3 4 5 6 for i in range (5 ): if i == 2 : continue if i == 4 : break print (i)
6. 函数 定义函数 1 2 3 4 def greet (name ): return f"Hello, {name} " print (greet("Alice" ))
默认参数 1 2 3 4 def add (a, b=10 ): return a + b print (add(5 ))
可变参数 1 2 3 4 def sum_all (*args ): return sum (args) print (sum_all(1 , 2 , 3 , 4 ))
7. 数据结构 列表(List) 1 2 3 4 fruits = ["apple" , "banana" , "cherry" ] fruits.append("orange" ) fruits.remove("banana" ) print (fruits[0 ])
元组(Tuple) 元组是不可变的序列。
1 2 coordinates = (10 , 20 ) print (coordinates[0 ])
字典(Dictionary) 字典存储键值对。
1 2 3 person = {"name" : "Alice" , "age" : 25 } print (person["name" ]) person["age" ] = 26
集合(Set) 集合存储唯一值。
1 2 3 numbers = {1 , 2 , 3 , 4 } numbers.add(5 ) print (numbers)
8. 列表推导式 1 2 squares = [x**2 for x in range (5 )] print (squares)
9. 异常处理 1 2 3 4 5 6 try : result = 10 / 0 except ZeroDivisionError: print ("不能除以零" ) finally : print ("执行完成" )
10. 文件操作 写入文件 1 2 with open ("example.txt" , "w" ) as file: file.write("Hello, World!" )
读取文件 1 2 3 with open ("example.txt" , "r" ) as file: content = file.read() print (content)
11. 类与对象 定义类 1 2 3 4 5 6 7 8 9 10 11 class Person : def __init__ (self, name, age ): self.name = name self.age = age def greet (self ): print (f"Hello, my name is {self.name} " ) p = Person("Alice" , 25 ) p.greet()
12. 模块与库 导入模块 1 2 import mathprint (math.sqrt(16 ))
自定义模块 创建一个文件 mymodule.py
:
1 2 def add (a, b ): return a + b
在另一个文件中使用:
1 2 from mymodule import addprint (add(3 , 5 ))
13. 常用内置函数
**len()
**:获取长度
**type()
**:获取数据类型
**range()
**:生成数值序列
**sum()
**:计算总和
**zip()
**:合并多个列表
14. 重要概念 列表与字典推导式 1 2 squares = [x**2 for x in range (5 )] double_dict = {x: x*2 for x in range (5 )}
枚举与迭代 1 2 3 names = ["Alice" , "Bob" ] for index, name in enumerate (names): print (index, name)
Lambda 表达式 1 2 add = lambda a, b: a + b print (add(3 , 5 ))
15. 注解与类型提示 1 2 def greet (name: str ) -> str : return f"Hello, {name} "
高级特性 1. 生成器与迭代器 生成器 生成器是使用 yield
的函数,用于生成一个可迭代对象。
1 2 3 4 5 6 7 def my_generator (): for i in range (5 ): yield i gen = my_generator() print (next (gen)) print (next (gen))
生成器常用于节省内存,适合处理大量数据的场景。
迭代器 迭代器是实现了 __iter__()
和 __next__()
方法的对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class MyIterator : def __init__ (self, limit ): self.limit = limit self.count = 0 def __iter__ (self ): return self def __next__ (self ): if self.count < self.limit: self.count += 1 return self.count else : raise StopIteration it = MyIterator(3 ) for num in it: print (num)
2. 装饰器 装饰器是一个函数,用于增强其他函数的功能。
函数装饰器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def decorator (func ): def wrapper (*args, **kwargs ): print ("Before function call" ) result = func(*args, **kwargs) print ("After function call" ) return result return wrapper @decorator def say_hello (): print ("Hello!" ) say_hello()
类装饰器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class MyDecorator : def __init__ (self, func ): self.func = func def __call__ (self, *args, **kwargs ): print ("Before function call" ) result = self.func(*args, **kwargs) print ("After function call" ) return result @MyDecorator def greet (name ): print (f"Hello, {name} " ) greet("Alice" )
3. 上下文管理器 上下文管理器通过实现 __enter__
和 __exit__
方法,用于管理资源。
1 2 3 4 5 6 7 8 9 10 class MyContext : def __enter__ (self ): print ("Entering context" ) return self def __exit__ (self, exc_type, exc_value, traceback ): print ("Exiting context" ) with MyContext() as ctx: print ("Inside context" )
常见上下文管理器示例:
1 2 with open ("file.txt" , "w" ) as file: file.write("Hello, World!" )
4. 元类 元类控制类的创建,是用来“创建类的类”。
定义元类 1 2 3 4 5 6 7 class MyMeta (type ): def __new__ (cls, name, bases, dct ): print (f"Creating class {name} " ) return super ().__new__(cls, name, bases, dct) class MyClass (metaclass=MyMeta): pass
5. 多线程与多进程 多线程 多线程使用 threading
模块实现。
1 2 3 4 5 6 7 8 9 import threadingdef print_numbers (): for i in range (5 ): print (i) thread = threading.Thread(target=print_numbers) thread.start() thread.join()
多进程 多进程使用 multiprocessing
模块实现。
1 2 3 4 5 6 7 8 9 from multiprocessing import Processdef print_numbers (): for i in range (5 ): print (i) process = Process(target=print_numbers) process.start() process.join()
6. 协程 协程是基于生成器的一种更轻量级的并发方式。
async
和 await
1 2 3 4 5 6 7 8 import asyncioasync def say_hello (): print ("Hello" ) await asyncio.sleep(1 ) print ("World" ) asyncio.run(say_hello())
并发执行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import asyncioasync def task (name, delay ): print (f"{name} started" ) await asyncio.sleep(delay) print (f"{name} finished" ) async def main (): await asyncio.gather( task("Task1" , 2 ), task("Task2" , 1 ), ) asyncio.run(main())
7. 数据类(Dataclass) 数据类是简化类定义的一种方式,适用于存储数据的类。
1 2 3 4 5 6 7 8 9 from dataclasses import dataclass@dataclass class Person : name: str age: int person = Person(name="Alice" , age=25 ) print (person)
8. 类型提示 类型提示提供了静态类型检查的能力。
1 2 3 4 5 6 7 8 def add (a: int , b: int ) -> int : return a + b from typing import List def greet_all (names: List [str ] ) -> None : for name in names: print (f"Hello, {name} " )
9. 正则表达式 使用 re
模块进行模式匹配。
1 2 3 4 5 6 import repattern = r"\d+" text = "There are 42 apples and 33 bananas." matches = re.findall(pattern, text) print (matches)
10. 枚举 枚举用于定义一组常量。
1 2 3 4 5 6 7 8 9 10 from enum import Enumclass Color (Enum ): RED = 1 GREEN = 2 BLUE = 3 print (Color.RED) print (Color.RED.name) print (Color.RED.value)
11. 函数式编程 map
、filter
和 reduce
1 2 3 4 5 6 from functools import reducenums = [1 , 2 , 3 , 4 ] squared = list (map (lambda x: x**2 , nums)) even = list (filter (lambda x: x % 2 == 0 , nums)) summed = reduce(lambda x, y: x + y, nums)
列表推导式 1 squares = [x**2 for x in range (10 ) if x % 2 == 0 ]
12. 序列化 使用 json
和 pickle
模块处理数据序列化。
JSON 1 2 3 4 5 6 7 import jsondata = {"name" : "Alice" , "age" : 25 } json_str = json.dumps(data) print (json_str) parsed_data = json.loads(json_str)
Pickle 1 2 3 4 5 6 7 8 import pickledata = {"name" : "Alice" , "age" : 25 } with open ("data.pkl" , "wb" ) as file: pickle.dump(data, file) with open ("data.pkl" , "rb" ) as file: loaded_data = pickle.load(file)
13. 内存优化 生成器代替列表 1 gen = (x**2 for x in range (1000000 ))
__slots__
使用 __slots__
限制类的属性,减少内存开销。
1 2 3 4 5 class MyClass : __slots__ = ["name" , "age" ] obj = MyClass() obj.name = "Alice"
14. 集合操作 1 2 3 4 5 6 a = {1 , 2 , 3 } b = {3 , 4 , 5 } print (a & b) print (a | b) print (a - b)
15. 上下文管理与性能优化 上下文管理器 1 2 3 4 5 6 7 8 9 10 from contextlib import contextmanager@contextmanager def my_context (): print ("Entering context" ) yield print ("Exiting context" ) with my_context(): print ("Inside context" )
时间分析 1 2 3 4 5 6 import timestart = time.time() end = time.time() print (f"Elapsed time: {end - start} seconds" )