Python模块:从入门到精通,只需一篇文章!

简介: Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。

模块

Python中的模块是一种将相关代码组织在一起的方式,以便更容易地重用和维护。模块可以是Python文件(以.py结尾),也可以是C或C++扩展,或者是已经编译成共享库(动态链接库)的扩展。Python标准库包含了大量的模块,用于执行各种任务,如文件操作、网络编程、字符串处理等。

模块的定义和导入

  1. 模块 就好比是 工具包,要想使用这个工具包中的工具,就需要 导入 import 这个模块
  2. 每一个以扩展名 py 结尾的 python 源代码文件都是一个 模块
  3. 在模块中定义的 全局变量 、 函数 都是模块能够提供给外界直接使用的工具

定义模块

要定义一个模块,只需创建一个Python文件,并在其中编写代码。例如,创建一个名为mymodule.py的文件:

# mymodule.py
def greet(name):
    return f"Hello, {name}!"

导入模块

要使用模块中的函数、类或变量,首先需要导入该模块。有几种导入模块的方法:

直接导入模块

import mymodule
print(mymodule.greet("Alice"))  # 输出: Hello, Alice!

导入模块中的特定部分

from mymodule import greet
print(greet("Bob"))  # 输出: Hello, Bob!

导入模块并为其指定别名

import mymodule as mm
print(mm.greet("Charlie"))  # 输出: Hello, Charlie!

导入模块中的所有内容(不推荐,可能会导致命名冲突)

from mymodule import *
print(greet("David"))  # 输出: Hello, David!

使用标准库模块

Python标准库包含了许多模块,这些模块提供了大量用于执行常见任务的函数和类。例如,os模块用于与操作系统交互,sys模块提供了一些与Python解释器交互的函数,re模块用于正则表达式匹配等。

例如:

import os
print(os.getcwd())  # 获取当前工作目录

常用模块

模块 用途
os os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。
sys sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。
time time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。
datetime datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。
random random 模块提供了生成随机数的函数,例如生成随机整数、浮点数、序列等。
math math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。
re re 模块提供了正则表达式处理函数,可以用于文本搜索、替换、分割等。
json json 模块提供了JSON编码和解码函数,可以将Python对象转换为JSON格式,并从JSON格式中解析出Python对象。
urllib urllib 模块提供了访问网页和处理URL的功能,包括下载文件、发送POST请求、处理cookies等。

random

  • 获取随机数,需要引入random库
  • import random
函数名 函数说明
randrange(start, stop[, step]) start指定范围的起始值包含本身,默认是0;stop指定范围的结束值不包含本身;step为步长,默认步长是1。该函数返回一个整数
randint(start, end) 返回[start, end]之间的一个随机整数,start必须小于end
random() 返回一个[0.0, 1.0)之间的随机小数
choice(seq) 返回一个序列(列表、元组、字符串)中的一个随机元素
shuffle(seq) 将序列元素随机排列(打乱顺序)

math

  • 操作数字的运算
  • import math
函数名 函数的说明 示例
math.ceil() 向上取整 math.ceil(18.1) #19
math.floor() 向下取整 math.floor(18.1) #18
math.sqrt() 求平方根 math.sqrt(100) # 结果应为10.0,

re

  • 正则表达式处理
  • 可以用于文本搜索、替换、分割等
模式 说明
Ls 匹配任意空白字符,等价于\s -
\S 匹配任意非空字符 -
\d 匹配任意数字,等价于[0-9] -
\D 匹配任意非数字 -
^ 匹配字符串开始 -
$ 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 -
\A 匹配字符串开始(忽略多行模式) -
\Z 匹配字符串结束(忽略多行模式) -
\z 匹配字符串结束(考虑多行模式) -
G 匹配最后匹配完成的位置 -
\n 匹配一个换行符 -
\t 匹配一个制表符 -
\b 匹配字符串的开头或结尾,或单词边界 -
. 匹配任意字符,除了换行符;当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 -
[...] 用来表示一组字符,单独列出:[amk]匹配amk -
[^...] 不在口中的字符:[^abc]匹配除了abc之外的字符 -
* 匹配0个或多个的表达式 -
+ 匹配1个或多个的表达式 -
? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 -
{n} 精确匹配n个前面表达式 -
{n,m} 匹配nm次由前面的正则表达式定义的片段,贪婪方式 -
(...) 匹配括号内的表达式,也表示一个组 -

turtle

  • 1969年诞生,Python语言的标准库之一,入门级的图形绘制函数库
  • 它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令,海龟走过的轨迹绘制成了图形
方法 说明
forward(d)/fd(d) 向当前画笔方向移动d像素长度
backward(d)/back(d)/bk(d) 向当前画笔相反方向移动d像素长度
goto(x,y)/setpos(x,y)/setposition(x,y) 将画笔移动到坐标为x,y的位置
setx(x) 设置海龟的横坐标为x,纵坐标保持不变
sety(y) 设置海龟的纵坐标为y,横坐标保持不变
penup()/up() 提起笔移动,不绘制图形,用于另起一个地方绘制
pendown()/down() 放下笔,移动时绘制图形,缺省时也为绘制
right(degree)/rt(degree) 顺时针移动degree°
left(degree)/lt(degree) 逆时针移动degree°
setheading(angle)/seth(angle) 设置海龟的朝向为angle
circle(radius, extent=None, steps=None) 绘制圆弧(radius为半径,extent为圆弧范围,steps为绘制圆弧时的步数,后两者可选)
dot(radius, colorstr) 绘制一个指定直径(radius)和颜色(colorstr)的圆点
home() 设置当前画笔位置为原点,朝向东

自定义模块

除了标准库模块,你还可以创建自己的模块。这些自定义模块可以放在当前脚本的同一目录中,或者放在Python的模块搜索路径(如sys.path)中的某个目录中。

包(Packages)

包是一种包含多个模块的容器。包通常包含一个init.py文件(即使该文件为空),这使得Python将该目录视为一个包。包的结构通常如下

mypackage/
    __init__.py
    module1.py
    module2.py

要导入包中的模块,可以使用点(.)表示法:

import mypackage.module1
print(mypackage.module1.some_function())

或者,从包中导入特定的部分:

from mypackage.module2 import another_function
another_function()

虚拟环境

为了避免不同项目之间的依赖冲突,Python提供了虚拟环境(Virtual Environments)。虚拟环境是一个独立的Python环境,在其中安装的模块不会影响全局Python环境。

Python虚拟环境是一个独立的、隔离的Python运行环境,它拥有自己的Python解释器、第三方库和应用程序。这种隔离性使得不同项目之间的依赖关系不会相互干扰,每个项目都可以使用自己独立的Python解释器和第三方库版本。

虚拟环境的作用

  1. 隔离性:每个虚拟环境都是独立的,互不影响。这意味着在一个虚拟环境中安装的Python包不会影响其他虚拟环境或全局Python环境。
  2. 可定制性:可以根据项目的需求,为每个虚拟环境选择特定的Python版本和安装所需的第三方包。
  3. 可复制性:虚拟环境可以轻松地复制和迁移到其他机器上,确保在不同环境中的一致性。
  4. 易于管理:通过激活和停用虚拟环境,可以方便地切换到不同的Python项目环境。

如何创建和使用虚拟环境

Python提供了多种创建虚拟环境的方法,包括使用内置的venv模块和第三方库virtualenv。

方法一:使用内置的venv模块(Python 3.3及以上版本)

  1. 打开命令行终端:如Windows的命令提示符或PowerShell,macOS和Linux的终端。
  2. 进入项目目录:使用cd命令进入你想要创建虚拟环境的项目目录。
  3. 创建虚拟环境:使用命令python -m venv env_name,其中env_name是你为虚拟环境指定的名称。
  4. 激活虚拟环境:
    • 在Windows上,执行env_name\Scripts\activate.bat
    • 在macOS和Linux上,执行source env_name/bin/activate

激活后,命令行提示符会显示虚拟环境的名称,表明你正在虚拟环境中工作。

  1. 安装依赖包:使用pip install 包名命令安装项目所需的库。
  2. 运行项目:在虚拟环境中运行你的Python项目。
  3. 退出虚拟环境:使用deactivate命令退出当前虚拟环境。

方法二:使用第三方库virtualenv

  1. 安装virtualenv:如果还没有安装virtualenv,可以使用pip install virtualenv命令进行安装。
  2. 创建虚拟环境:使用命令virtualenv env_name创建虚拟环境。
  3. 激活虚拟环境:与使用venv模块相同,根据操作系统执行相应的激活命令。
  4. 后续步骤:安装依赖包、运行项目和退出虚拟环境的步骤与使用venv模块相同。

虚拟环境的迁移和打包

  1. 打包依赖包:使用pip freeze > requirements.txt命令将当前虚拟环境中的依赖包版本信息导出到requirements.txt文件中。
  2. 迁移虚拟环境:在新环境中,使用pip install -r requirements.txt命令根据requirements.txt文件安装所有依赖包,从而复制原虚拟环境。

使用国内镜像源安装依赖包

由于网络原因,有时直接从Python官方的PyPI源安装依赖包可能会很慢或失败。此时,可以使用国内镜像源来加速安装过程。例如,使用清华大学的镜像源:

  1. 临时使用:在安装依赖包时,使用-i选项指定镜像源,如pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
  2. 设置为默认源:使用pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple命令将清华大学镜像源设置为默认源。

其他虚拟环境管理工具

除了venv和virtualenv之外,还有一些其他的虚拟环境管理工具,如pipenv和poetry。这些工具提供了更高级的功能,如依赖包管理、虚拟环境创建和删除、项目发布等。

  1. pipenv:集成了pip和virtualenv的功能,并提供了Pipfile和Pipfile.lock文件来管理项目依赖。使用pip install pipenv命令安装pipenv后,可以使用pipenv install命令安装依赖包,pipenv shell命令激活虚拟环境等。
  2. poetry:是一个用于Python项目打包和依赖管理的工具。它提供了类似于pipenv的功能,但具有更强大的依赖解析和版本控制能力。使用pip install poetry命令安装poetry后,可以使用poetry init命令初始化项目,poetry add命令添加依赖包等。
相关文章
|
14天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
19天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
4天前
|
Python
Python Internet 模块
Python Internet 模块。
100 74
|
22天前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
104 63
|
15天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
15天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
35 7
|
16天前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
34 5
|
15天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
42 3
|
19天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
22天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。