首页 > 其他分享 >模块与包

模块与包

时间:2023-12-14 21:34:58浏览次数:26  
标签:导入 user 模块 import input math

【一】模块

模块(Module)是指包含了一组相关功能的代码集合,可以通过导入(import)的方式在其他程序中重复使用。

在Python中,一个模块可以是一个包含了函数、类、变量和语句的.py文件。模块提供了一种组织和重用代码的方式,使得代码的编写、维护和理解都变得更加简单和高效。

通过将相关的代码组织在模块中,我们可以将代码按照功能进行划分,使得每个模块都具有特定的目的和责任。模块可以被其他程序导入,并通过调用其中的函数、使用其中的类或访问其中的变量来实现代码的重用。

Python标准库提供了大量的模块,涵盖了各种常见的任务和功能,例如文件操作、网络通信、数据处理、数学计算等。此外,还有许多第三方库和框架也提供了自己的模块,可以扩展Python的功能。

1.1 导入方式

1.1.1 impor直接导入

# 导入math模块
# 可以导入多个模块用逗号分割
# import math,os
import math
# 使用math模块中的函数和常量
print(math.sqrt(16))  # 计算平方根
print(math.pi)       # 输出圆周率

# 导入模块中的特定函数或类
from math import sin, cos

# 使用导入的函数
print(sin(0.5))  # 计算正弦值
print(cos(0.5))  # 计算余弦值

在上述示例中,我们首先使用import语句导入了math模块,然后使用math.sqrt()math.pi来调用该模块中的函数和常量。

1.1.2 from + import

调用文件内容
from func.get_user_info import main

main()
调用文件内容
def get_user_info(info):  
    def inner(*args, **kwargs):  
        global username_user_input, password_user_input  
        username_user_input = input('请输入用户名').strip()  
        password_user_input = input('请输入密码').strip()  
        return info(*args, **kwargs, username_input=username_user_input, password_input=password_user_input)  
  
    return inner  
  
  
@get_user_info  
def main(*args, **kwargs):  
    ...  
    return username_user_input, password_user_input

1.1.3 导入后起别名

from func.get_user_info import main as zhu

zhu()

1.2 导入文件后执行的操作

当在Python中使用import语句导入文件时,会执行以下操作:

  1. 导入模块:Python解释器会查找指定的模块文件,并将其加载到内存中。如果模块已经被加载过,它将被直接引用,否则将执行下面的步骤。

  2. 编译模块:Python解释器会将模块文件编译成字节码形式,以便后续执行。

  3. 创建模块的命名空间:一个模块在导入时会创建一个独立的命名空间,用于存储模块中定义的函数、变量和类等。

  4. 执行模块代码:Python解释器会按顺序执行模块中的代码。这意味着模块中的顶层语句(不在任何函数或类定义内部的语句)将被执行。

    • 变量定义和赋值语句将创建并初始化相应的变量。
    • 函数定义语句将创建函数对象并将其绑定到相应的名称。
    • 类定义语句将创建类对象并将其绑定到相应的名称。
  5. 返回模块对象:导入完成后,import语句将返回表示已导入模块的模块对象。可以使用该对象来访问模块中定义的函数、变量和类。

1.3 循环导入问题

循环导入指的是在模块之间相互导入形成循环依赖的情况。当两个或多个模块相互导入时,如果导入路径形成循环,就会导致循环导入的错误。

例如,假设有两个模块A和B,模块A导入了模块B,同时模块B也导入了模块A。当任何一个模块被导入时,Python解释器会尝试导入所需的依赖模块。在这种情况下,导入模块A时会触发导入模块B,而导入模块B时又会触发导入模块A,从而形成了循环依赖。

循环导入可能会导致程序出现以下问题:

  • NameError:由于模块在导入过程中还未完全加载,因此无法访问对方模块中的名称。
  • 逻辑错误:循环导入可能导致代码执行顺序混乱,使得预期的行为无法实现。

【二】包

包(Package)是一种组织和管理Python模块的方式。它是一个包含多个模块的目录,目录下通常会包含一个特殊的文件__init__.py,用于标识该目录为一个包。

通过使用包,可以将相关的模块组织在一起,形成一个更大的功能单元。包的主要目的是为了提供一种更好的模块管理方式,使得模块的组织结构更清晰、易于维护和重用。

包可以创建多层次的结构,用于更好地组织和管理模块。可以在包中导入其他模块和子包,并通过点号.进行层级访问。

例如,假设我们有一个名为my_package的包,它包含以下文件和目录:

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

2.1 包的导入方式

# 导入包
import my_package.module1
# 导入my_package包中subpackage模块的module3
from my_package.subpackage import module3

标签:导入,user,模块,import,input,math
From: https://www.cnblogs.com/wx-x/p/17902055.html

相关文章

  • 模块与包
    模块与包1.导入模块与包1.1import语法importxxx模块名#import语句无法加载到模块下面的变量名,他只能加载到模块名##import只能导入模块名#此时我在src包下的login_register.py模块中,我想引用add_bank模块内的方法importadd_bank#引用add_bank里的方法,需要加......
  • 模块与包
    【模块】定义 使用方法(import文件名  使用) (from文件名 import 需要调用的东西) (formimport 案例) (包的定义) (yild生成器) (模块导入的优先级) ......
  • Python项目之ATM1.0多模块函数
    ATM1.0多模块【作业】#ATM:提款姬#===================用户功能菜单=====================#1.注册#2.登陆#3.取款#4.转账#5.充值余额#6.查看流......
  • 关于找不到指定的模块,异常来自HRESULT:0x8007007E的解决方法
    原文链接:https://www.cnblogs.com/ReBack2010/p/3713851.html上午从公司前辈那里拷贝到的ASP.NET代码,在自己机器上部署的时候发现问题,直接报错,找不到指定的模块,异常来自HRESULT:0x8007007E。并且一大堆警告。在网上百度很多解决方法,归纳如下:1、缺少DLL文件,我用depends打开我的B......
  • 拍卖直播电商平台再“内卷”,开发创新增值服务模块刻不容缓
    随着拍卖直播电商平台逐渐崛起,未来的竞争将在于谁能提供更多样化、个性化的创新增值服务成为了“内卷”新方向。不同拍卖领域的创新增值服务,将成为平台吸引用户和赢得市场份额的关键。以下是参考“东莞梦幻网络科技”开发的电商拍卖直播系统源码各个领域的关键增值服务:一、原石拍......
  • os模块的使用
    1.os.getcwd()、os.path.basename()、os.path.join()用法: 2.os.path.exists()、os.path.isdir()、os.path.isfile()、os.listdir()用法: 3.os.walk()用法: 4.os.scandir()用法: 5.os.stat()、os.mkdir()、os.makedirs()用法: 6.os.rename()用法: 7.os.remove()用法:......
  • Python项目之ATM1.0单模块函数版
    ATM1.0【作业】#ATM:提款姬#===================用户功能菜单=====================#1.注册#2.登陆#3.取款#4.转账#5.充值余额#6.查看流水#......
  • DC电源模块:为您的电子设备提供稳定可靠的能量
    DC电源模块:为您的电子设备提供稳定可靠的能量BOSHIDADC电源模块是一种电子设备,用于为其他电子设备提供稳定可靠的直流电能。它通常由一个输入端,一个输出端和一些内部电路组成。输入端通常接收来自交流电源或其他电源的电能,经过内部电路的处理后,以所需的稳定电压输出到输出端,供其......
  • 模块与包
    模块什么是模块?模块就是一些列功能的集合体,通常一个py文件就是一个模块。一个Python文件本身就是一个模块,文件名m.py,模块名叫m模块分为三大类1.内置的模块(python解释器自带的模块,直接使用)2.第三方的模块(python社区伙伴们开源提供的python模块,需要下载后使用)3.自定义的......
  • 【Web攻防之业务安全实战指南】第5章 业务办理模块测试
    5.1订单ID篡改测试5.1.1测试原理和方法在有电子交易业务的网站中,用户登录后可以下订单购买相应产品,购买成功后,用户可以查看订单的详情。当开发人员没有考虑登录后用户间权限隔离的问题时,就会导致平行权限绕过漏洞。攻击者只需注册一个普通账户,就可以通过篡改、遍历订单id,获得其......