文章目录
前言
Python是一种强大且易于学习的编程语言。通过这个21天的计划,我们将逐步深入函数简单介绍。无论你是初学者还是有一定基础的开发者,这个计划都将帮助你巩固和扩展你的Python知识。
在学习本篇之前,我们先复习一下前面的内容:
day1:Python下载和开发工具介绍
day2:数据类型、字符编码、文件处理
day3:基础语法与课外练习
day4:函数简单介绍
day5:模块与包
一、时间与日期处理
1、time 模块
- 功能:提供与时间相关的函数,如获取当前时间戳、格式化时间等。
- 常用函数:
- time.time():返回当前时间的时间戳(秒数)。
- time.sleep(seconds):暂停程序执行指定的秒数。
- time.strftime(format, tuple):将时间元组格式化为字符串。
- time.strptime(string, format):将字符串解析为时间元组。
- 拓展:了解时间戳、时间元组、UTC时间等概念。
- 学习目标:能够获取当前时间,进行时间格式转换,并实现简单的定时任务。
- 示例:
import time
timestamp = time.time()
print(f"当前时间戳: {timestamp}")
time.sleep(2) #暂停两秒
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(f"格式化后的时间: {formatted_time}")
2、datetime 模块
- 功能:提供更高级的日期和时间处理功能,包括日期、时间、时间间隔等。
- 常用类:
- datetime.datetime:表示日期和时间。
- datetime.date:表示日期。
- datetime.time:表示时间。
- datetime.timedelta:表示时间间隔。
- 常用方法:
- datetime.datetime.now():获取当前日期和时间。
- datetime.datetime.strptime(string, format):将字符串解析为datetime对象。
- datetime.datetime.strftime(format):将datetime对象格式化为字符串。
- datetime.timedelta(days=x, seconds=y):创建一个时间间隔对象。
- 拓展:学习时区处理、日期计算等高级用法。
- 学习目标:能够创建、格式化、比较和计算日期和时间。
- 示例:
import datetime
now = datetime.datetime.now()
print(f"当前日期和时间: {now}")
future = now + datetime.timedelta(days=7)
print(f"一周后的日期和时间: {future}")
二、随机数与数据生成
3、random 模块
- 功能:生成伪随机数。
- 常用函数:
- random.random():生成0到1之间的随机浮点数。
- random.randint(a, b):生成a到b之间的随机整数(包含a和b)。
- random.choice(sequence):从序列中随机选择一个元素。
- random.shuffle(list):将列表中的元素随机排序。
- 拓展:了解随机数种子、概率分布等概念。
- 学习目标:能够生成随机数,用于模拟、游戏、数据分析等场景。
- 示例:
import random
random_number = random.randint(1, 100)
print(f"随机数: {random_number}")
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(f"打乱后的列表: {my_list}")
三、操作系统交互
4、os模块
- 功能:提供与操作系统交互的函数,如文件和目录操作、环境变量访问等。
- 常用函数:
- os.getcwd():获取当前工作目录。
- os.chdir(path):改变当前工作目录。
- os.mkdir(path):创建目录。
- os.makedirs(path):递归创建目录。
- os.rmdir(path):删除空目录。
- os.remove(path):删除文件。
- os.rename(old, new):重命名文件或目录。
- os.path.exists(path):检查路径是否存在。
- os.path.join(path1, path2, …):拼接路径。
- os.listdir(path):列出目录中的文件和子目录。
- os.environ:访问环境变量。
- 拓展:学习文件权限、进程管理等高级用法。
- 学习目标:能够进行文件和目录操作,访问环境变量,编写跨平台代码。
- 示例:
import os
current_dir = os.getcwd()
print(f"当前工作目录: {current_dir}")
new_dir = os.path.join(current_dir, "new_directory")
os.makedirs(new_dir, exist_ok=True) # exist_ok=True 防止目录已存在时报错
5、sys模块
- 功能:提供对Python运行时环境的访问,如命令行参数、标准输入输出等。
- 常用属性和函数:
- sys.argv:命令行参数列表。
- sys.stdin:标准输入。
- sys.stdout:标准输出。
- sys.stderr:标准错误输出。
- sys.exit(code):退出程序。
- sys.path:模块搜索路径。
- 拓展:了解标准输入输出重定向、异常处理等高级用法。
- 学习目标:能够处理命令行参数,控制程序输入输出,管理模块搜索路径。
- 示例:
import sys
print(f"命令行参数: {sys.argv}")
# 示例:从标准输入读取一行数据
# line = sys.stdin.readline().strip()
# print(f"你输入的是: {line}")
四、文件与目录操作
6、shutil模块
- 功能:提供高级的文件操作功能,如复制、移动、删除文件和目录。
- 常用函数:
- shutil.copy(src, dst):复制文件。
- (此处原内容 shutil.copytree(src:不完整,推测可能是 shutil.copytree(src, dst) 用于递归复制目录)
五、数据序列化与持久化
7、shelve 模块
- 功能:提供简单的持久化存储方式,以键值对形式存储Python对象。
- 常用函数和操作:
- shelve.open(filename):打开一个shelve文件。
- shelf[‘key’] = value:存储数据。
- value = shelf[‘key’]:读取数据。
- del shelf[‘key’]:删除数据。
- shelf.close():关闭shelve文件。
- 拓展:了解shelve文件的内部结构、并发访问等高级用法。
- 学习目标:能够使用shelve模块存储和读取数据,实现简单的数据持久化。
- 示例:
import shelve
with shelve.open('my_data') as db:
db['name'] = 'Charlie'
db['age'] = 40
with shelve.open('my_data') as db:
print(f"Name: {db['name']}, Age: {db['age']}")
六、配置管理
8、configparser 模块
- 功能:用于读取和写入配置文件。
- 常用类和方法:
- configparser.ConfigParser():创建一个ConfigParser对象。
- config.read(filename):读取配置文件。
- config.get(section, option):获取配置项的值。
- config.set(section, option, value):设置配置项的值。
- config.add_section(section):添加一个section。
- config.write(file):将配置写入文件。
- 拓展:了解配置文件的格式、变量插值等高级用法。
- 学习目标:能够读取和写入配置文件,实现应用程序的配置管理。
- 示例:
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {
'ServerAliveInterval': '45',
'Compression': 'yes',
'CompressionLevel': '9'
}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.com'] = {}
topsecret = config['topsecret.com']
topsecret['Host Port'] = '50022' # mutates the parser
topsecret['ForwardX11'] = 'no' # same here
config['DEFAULT']['ForwardX11'] = 'yes'
with open('example.ini', 'w') as configfile:
config.write(configfile)
七、安全与加密
9、hashlib模块
- 功能:提供各种哈希算法,用于数据完整性校验和密码存储。
- 常用函数:
- hashlib.md5(data):创建MD5哈希对象。
- hashlib.sha256(data):创建SHA256哈希对象。
- hash_object.update(data):更新哈希对象。
- hash_object.hexdigest():获取哈希值的十六进制表示。
- 拓展:了解哈希算法的原理、加盐、密码存储的最佳实践。
- 学习目标:能够使用哈希算法进行数据完整性校验和密码存储。
- 示例:
import hashlib
data = "Hello, world!"
hash_object = hashlib.sha256(data.encode('utf-8'))
hex_digest = hash_object.hexdigest()
print(f"SHA256哈希值: {hex_digest}")
八、进程管理
10、subprocess模块
- 功能:允许你创建新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码。
- 常用函数:
- subprocess.run(command, capture_output=True, text=True):运行命令并获取结果。
- subprocess.Popen(command, stdin, stdout, stderr):创建一个子进程。
- 拓展:了解进程间通信、管道、错误处理等高级用法。
- 学习目标:能够创建子进程,执行外部命令,并获取命令的输出。
- 示例:
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(f"命令输出: {result.stdout}")
- 如果提示错误:FileNotFoundError: [WinError 2] 系统找不到指定的文件,将 代码换成如下即可:
import subprocess
result = subprocess.run(['dir'], capture_output=True, text=True, shell=True)
print(result.stdout)
九、日志记录
11、logging模块
- 功能:提供灵活的日志记录功能,用于记录程序运行时的信息。
- 常用函数:
- logging.basicConfig(level=logging.INFO):配置日志记录器。
- logging.debug(message):记录调试信息。
- logging.info(message):记录一般信息。
- logging.warning(message):记录警告信息。
- logging.error(message):记录错误信息。
- logging.critical(message):记录严重错误信息。
- 拓展:了解日志级别、日志格式、日志处理器等高级用法。
- 学习目标:能够使用logging模块记录程序运行时的信息,方便调试和维护。
- 示例:
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logging.info("程序开始运行")
try:
result = 10 / 0
except ZeroDivisionError as e:
logging.error(f"发生错误: {e}")
logging.info("程序运行结束")
十、文本处理
12、re 模块
- 功能:提供正则表达式操作,用于文本匹配、搜索、替换等。
- 常用函数:
- re.search(pattern, string):在字符串中搜索匹配的模式。
- re.match(pattern, string):从字符串的开头匹配模式。
- re.findall(pattern, string):查找所有匹配的模式。
- re.sub(pattern, replacement, string):替换匹配的模式。
- re.compile(pattern):编译正则表达式,提高效率。
- 拓展:学习正则表达式的语法、分组、回溯等高级用法。
- 学习目标:能够使用正则表达式进行文本匹配、搜索、替换等操作。
- 示例:
import re
text = "My email is example@example.com"
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
match = re.search(pattern, text)
if match:
print(f"找到的邮箱地址: {match.group()}")
学习建议
- 循序渐进:按照模块的分类和难度,逐步学习。
- 多做练习:编写代码,使用模块解决实际问题。
- 查阅文档:熟悉官方文档,深入理解模块细节。
- 项目实践:尝试在小型项目中应用所学模块。
- 持续学习:Python生态系统不断发展,保持学习的热情。
结语
通过这个21天的Python计划,我们涵盖了常用模块介绍。希望这些内容能帮助你更好地理解和使用Python。继续学习和实践,你将成为一名优秀的Python开发者!