模块与包的学习

Python模块与包的基础概念

模块是包含Python代码的.py文件,可以包含函数、类或变量。通过模块化,代码可被重复使用和组织。

是包含多个模块的目录,必须包含一个__init__.py文件(可以是空文件)。包用于进一步组织模块,形成层次结构。

创建和使用模块

创建一个名为mymodule.py的文件,内容如下:

def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

在另一个文件中导入并使用模块:

import mymodule

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

导入模块的不同方式

直接导入整个模块:

import math
print(math.sqrt(16))

导入特定功能:

from math import sqrt
print(sqrt(16))

使用别名:

import numpy as np
from math import sqrt as square_root

创建和使用包

创建包目录结构:

mypackage/
    __init__.py
    module1.py
    module2.py
    subpackage/
        __init__.py
        module3.py

module1.py中:

def func1():
    return "Function 1"

module2.py中:

def func2():
    return "Function 2"

使用包中的模块:

from mypackage import module1
from mypackage.module2 import func2

print(module1.func1())
print(func2())

__init__.py的作用

__init__.py文件可以包含包的初始化代码,或定义__all__变量来控制from package import *的行为。例:

__all__ = ['module1', 'module2']

相对导入

在包内部模块中使用相对导入:

# 在module3.py中
from ..module1 import func1
from . import another_module

Python标准库模块示例

常用标准库模块:

  • os:操作系统接口
  • sys:系统相关功能
  • math:数学运算
  • datetime:日期时间处理
  • json:JSON编码解码

使用示例:

import os
from datetime import datetime

print(os.getcwd())
print(datetime.now())

安装第三方包

使用pip安装第三方包:

pip install requests numpy pandas

使用第三方包:

import requests
import numpy as np

response = requests.get('https://api.example.com')
array = np.array([1, 2, 3])

模块搜索路径

Python解释器按以下顺序搜索模块:

  1. 当前目录
  2. PYTHONPATH环境变量指定的目录
  3. Python安装目录

查看模块搜索路径:

import sys
print(sys.path)

模块和脚本的区别

模块通常设计为被导入使用,而脚本设计为直接运行。使用__name__判断执行方式:

if __name__ == '__main__':
    print('This is running as a script')

包分发和安装

创建可安装的包需要setup.py文件:

from setuptools import setup

setup(
    name='mypackage',
    version='0.1',
    packages=['mypackage'],
)

安装本地包:

pip install -e .

虚拟环境的使用

创建虚拟环境:

python -m venv myenv

激活虚拟环境:

  • Windows: myenv\Scripts\activate
  • Unix/macOS: source myenv/bin/activate

常用工具和资源

  • pip:Python包管理器
  • virtualenv:创建隔离的Python环境
  • pytest:测试框架
  • Python官方文档:https://docs.python.org/3/tutorial/modules.html
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值