【100天精通python】Day15:python 第三方模块和包,模块如何以主程序形式执行

news2024/10/11 1:36:51

目录

1 常用的第三方模块

2. 第三方模块的安装和使用

2.1 安装第三方模块:

2.2 导入第三方模块:

2.3 使用第三方模块:

 3 模块以主程序形式执行

 4 python 中的包

 4.1 python程序的包结构 

4.2 创建包 

4.3 python中包的导入和使用

5  第三方模块和包的区别

6 实战,模拟计算个人所得税


        第三方模块和包的存在丰富了Python的功能和生态系统,使得Python成为一个强大而灵活的编程语言。你可以根据需要安装并使用适合你项目的第三方模块和包,从而提高开发效率和功能扩展。

      第三方模块是由其他开发者或组织编写的Python代码库,用于提供额外的功能和工具,丰富Python的生态系统。在使用第三方模块之前,需要先安装它们。

1 常用的第三方模块

        以下是一些常用的第三方模块,它们提供了各种各样的功能,涵盖了网络请求、数据处理、图像处理、科学计算、数据库连接、Web开发等方面:

  1. requests:用于发送HTTP请求,进行网络通信和获取数据。
  2. numpy:提供高性能的数值计算功能,用于数组和矩阵运算。
  3. pandas:用于数据处理和分析,提供数据结构和功能,如DataFrame和Series。
  4. matplotlib:用于绘制各种类型的图表和图形。
  5. seaborn:建立在matplotlib之上的统计数据可视化库,用于更漂亮和更简单的图表绘制。
  6. scikit-learn:用于机器学习和数据挖掘的库,提供各种算法和工具。
  7. TensorFlow 和 PyTorch:用于深度学习和神经网络的库,提供强大的构建和训练模型的功能。
  8. OpenCV:用于图像和视频处理的计算机视觉库。
  9. BeautifulSoup:用于解析HTML和XML文档,进行网页抓取和数据提取。
  10. Flask 和 Django:用于Web开发的框架,简化了网站和Web应用的构建过程。
  11. SQLAlchemy:用于数据库连接和操作的库,提供了面向对象的数据库映射。
  12. Pillow:用于图像处理和图像格式转换的库。
  13. Pygame:用于创建游戏和交互式应用程序的库。

        以上只是一小部分常用的第三方模块,Python的生态系统非常丰富,还有很多其他功能强大且广泛应用的第三方模块可供选择。你可以根据你的项目需求来选择适合的第三方模块,以提高开发效率和功能扩展。

2. 第三方模块的安装和使用

我们以requests模块为例来详细讲解第三方模块的使用示例:

2.1 安装第三方模块:

首先,我们需要使用包管理工具pip来安装requests模块。在命令行中执行以下命令:

pip install requests

2.2 导入第三方模块:

安装成功后,在Python脚本中导入requests模块:

import requests

2.3 使用第三方模块:

requests模块是用于向Web服务器发起HTTP请求的优秀工具。以下是一些常见的示例用法:

  • 发送GET请求:
  • import requests
    
    url = 'https://api.github.com'
    response = requests.get(url)
    
    if response.status_code == 200:
        print('Request successful')
    else:
        print('Request failed')
    

    发送POST请求:

  • import requests
    
    url = 'https://httpbin.org/post'
    data = {'key1': 'value1', 'key2': 'value2'}
    response = requests.post(url, data=data)
    
    print(response.text)
    

    下载文件:

  • import requests
    
    url = 'https://example.com/image.jpg'
    response = requests.get(url)
    
    if response.status_code == 200:
        with open('image.jpg', 'wb') as f:
            f.write(response.content)
        print('Download successful')
    else:
        print('Download failed')
    

    这些示例只是requests模块功能的冰山一角。Python社区中有许多优秀的第三方模块,涵盖了各种不同的领域和功能,可以满足各种需求。你可以通过搜索Python Package Index (PyPI) 或使用pip来查找并安装适合你项目需求的第三方模块。

 3 模块以主程序形式执行

        当模块被以主程序形式执行时,Python会将其__name__特殊变量设置为__main__,这使得我们可以区分模块是被导入还是作为主程序执行。在主程序中,我们可以编写一些代码,用于测试模块的功能或执行特定的任务。

下面是一个示例代码,展示了如何将模块以主程序形式执行:

# 示例模块 my_module.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def main():
    print("This is the main program of my_module.py")
    result = add(5, 3)
    print("Result of add function:", result)

    result = subtract(10, 4)
    print("Result of subtract function:", result)

if __name__ == "__main__":
    main()

在上述示例中,我们创建了一个名为my_module.py的模块。在模块中定义了addsubtract函数,并在main函数中测试了这两个函数。在最后一行代码if __name__ == "__main__":中,我们检查__name__是否为__main__,如果是,则调用main函数,这样模块就会以主程序形式执行。

当我们运行这个my_module.py模块时,输出如下:

This is the main program of my_module.py
Result of add function: 8
Result of subtract function: 6

如果我们在其他地方导入my_module.py,那么main函数不会被调用,只有模块中的函数和变量会被导入并可以在其他地方使用。这样设计可以使模块具有更好的可重用性。

 4 python 中的包

         Python程序中的包结构是一种用于组织和管理代码的层次结构。包结构由包(Package)和模块(Module)组成。

  1. 包(Package):包是一个包含模块和子包的文件夹。它用于将相关的模块组织在一起,形成一个命名空间,避免模块名称冲突。一个包是一个包含特殊文件 __init__.py 的目录。这个文件用于标识该目录为一个包。包可以有多级子包,形成类似文件系统的文件夹结构。

  2. 模块(Module):模块是包含Python代码的文件。一个模块可以包含函数、类、变量等代码,可以被其他模块或包导入和使用。模块的文件名通常以 .py 结尾。

my_package/
    __init__.py
    module1.py
    module2.py
    ...
  • my_package是包的名称,是一个包含多个模块的文件夹。
  • __init__.py是一个空文件,用于标识my_package目录是一个包。如果这个文件不存在,Python就不会把my_package目录视为包。
  • module1.pymodule2.py等是包含具体功能的模块文件。

使用包可以更好地组织代码,避免模块名称冲突,提高代码的可维护性。

 4.1 python程序的包结构 

        包结构可以使项目更加结构化和易于维护,同时避免了模块名称冲突。Python程序中的包结构可以根据项目的需要进行灵活的设计,以满足不同的开发需求。

一个python 项目中的包结构 

例如,一个典型的包结构可以如下所示:

my_project/
    main.py
    my_package/
        __init__.py
        module1.py
        module2.py
        sub_package1/
            __init__.py
            sub_module1.py
        sub_package2/
            __init__.py
            sub_module2.py

在上述例子中,my_project 是项目的根目录,其中包含了一个主程序 main.py 和一个名为 my_package 的包。my_package 包中包含了两个模块 module1.pymodule2.py,以及两个子包 sub_package1sub_package2。子包中分别包含了 sub_module1.pysub_module2.py 两个模块。

通过这种包结构,可以将相关的代码组织在一起,使得项目更加清晰和易于管理。

4.2 创建包 

创建一个包的步骤如下:

  1. 创建一个文件夹,作为包的根目录。包的根目录应该包含一个特殊的文件__init__.py,它会让Python将该文件夹识别为一个包。

  2. 在包的根目录下,创建你想要的模块文件,例如module1.pymodule2.py等。这些模块文件将包含你的代码。

  3. 在模块文件中定义你的函数、类和变量等。

  4. 如果有需要,可以在包的根目录下创建子文件夹,用于组织相关的模块文件。

  5. 在其他Python脚本中,使用import语句导入你的包和模块,并使用其中的函数和类。

例如,假设我们要创建一个名为my_package的包,其中包含两个模块module1module2,然后在另一个脚本中使用该包,具体步骤如下: 

  1. 创建一个文件夹,命名为my_package,在该文件夹中创建一个空文件__init__.py

  2. my_package文件夹下创建两个模块文件:module1.pymodule2.py

 在这些文件中定义一些函数或类,例如:

module1.py:

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

module2.py:

def add(a, b):
    return a + b

现在,我们可以在其他Python脚本中导入并使用这个包。在脚本中使用以下代码:

from my_package import module1, module2

print(module1.greet("Alice"))
print(module2.add(3, 5))

这样就成功创建了一个包并在其他脚本中使用了其中的模块。

4.3 python中包的导入和使用

(1)在其他模块中,可以使用 import 语句来导入包中的模块,例如:

import my_package.module1
import my_package.sub_package1.sub_module1

(2) 或者使用 from ... import ... 语句导入模块中的特定函数或变量:

from my_package import module1
from my_package.sub_package1 import sub_module1
from my_package import module1
module1.some_function()

(3) 如果想一次导入多个模块,可以使用 from ... import ... 语句:

from my_package import module1, module2

(4)使用as关键字给模块指定别名: 

import my_package.module1 as mod1
mod1.some_function()

(5)使用from语句导入包中的模块,并给模块指定别名: 

from my_package import module1 as mod1
mod1.some_function()

注意:在导入包的同时也会执行my_package目录下的__init__.py文件,这可以用于在导入时执行一些初始化操作。 

在编写自己的包时,需要在包的目录中添加 __init__.py 文件,这个文件可以为空,也可以包含一些初始化代码。这样,Python就会将这个目录视为一个包,而不仅仅是一个普通的文件夹。

总结:包是用于组织和管理相关模块的一种机制,它可以包含多级子包,使用 importfrom ... import 语句可以导入包中的模块。

5  第三方模块和包的区别

第三方模块和包都是扩展Python功能的外部工具,但它们有一些区别:

  1. 模块(Module):

    • 模块是包含Python代码的文件,通常以.py为后缀。
    • 模块可以包含函数、类、变量等代码,并且可以被其他Python程序导入和使用。
    • Python标准库中包含了许多内置的模块,例如mathrandom等。
    • 第三方模块是由其他开发者编写的,不隶属于Python标准库,需要通过pip等工具进行安装。
  2. 包(Package):

    • 包是一个包含多个模块的目录,必须包含一个名为__init__.py的文件。
    • 包的目录结构可以是多层嵌套的,用于组织相关的模块和子包。
    • 包提供了一种更好的组织和管理模块的方式,有助于避免模块名冲突,并提供了更复杂的功能封装。
    • 第三方包通常是以包的形式提供的,例如requests包。

        总的来说,模块是一个单独的文件,而包是一个目录,并且包含了多个相关的模块。第三方模块通常是以包的形式提供的,但也可以是单独的模块。无论是模块还是包,它们都能为Python程序提供额外的功能和工具,使得开发更加方便和高效。

6 实战,模拟计算个人所得税

编写一个计算个人所得税的程序,随时掌握自己的工资需要缴纳多少个人所得税

calculate_income_tax.py 

def calculate_income_tax(income):
    # 根据个人所得税计算规则计算税额
    if income <= 36000:
        tax = income * 0.03
    elif 36000 < income <= 144000:
        tax = (income - 36000) * 0.1 - 2520
    elif 144000 < income <= 300000:
        tax = (income - 144000) * 0.2 - 16920
    elif 300000 < income <= 420000:
        tax = (income - 300000) * 0.25 - 31920
    elif 420000 < income <= 660000:
        tax = (income - 420000) * 0.3 - 52920
    elif 660000 < income <= 960000:
        tax = (income - 660000) * 0.35 - 85920
    else:
        tax = (income - 960000) * 0.45 - 181920
    return tax

def main():
    try:
        income = float(input("请输入您的工资收入:"))
        if income < 0:
            print("工资收入不能为负数!")
        else:
            tax = calculate_income_tax(income)
            print("您需要缴纳的个人所得税为:", tax)
    except ValueError:
        print("请输入有效的数字!")

if __name__ == "__main__":
    main()

运行结果如下:

 使用这个程序,您可以输入您的工资收入,然后计算出需要缴纳的个人所得税金额。注意,这个示例程序只是一个简单的示例,实际的个人所得税计算可能有更复杂的规则,具体请参考您所在地区的税法规定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/789938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不同起点转角相遇,从抖音和小红书看「社区产品」宿命 | 融云观察

点击报名 8 月 3 日&#xff08;周四&#xff09;融云直播课~ 作为社交产品全球热点&#xff0c;Threads 偷袭 Twitter 以及由此升级的马斯克和扎克伯格约架给全球用户上演了一出好戏。关注【融云全球互联网通信云】了解更多 别打啦~ 马斯克直接在新闻下面回复“竞争可以&#…

Ubuntu 22.04下对无线网络作静态ip设置

内容如题所示&#xff0c;最近本人安全毕业&#xff0c;参加工作了&#xff0c;此处应有鲜花和掌声&#xff0c;哈哈哈。但新的生活总是有很多的小问题&#xff0c;坎坎坷坷&#xff0c;所以&#xff0c;我继续记录工作和学习生活中遇到的问题。 今天带我的云哥给了我一个ip&am…

Docker——compose单机容器集群编排

Docker——compose单机容器集群编排 一、Docker-compose概述1.为何需要Docker-compose2.Docker-compose 的特征3.Docker-compose 的优势4.Docker-compose 的劣势5.Docker-compose 的生产环境 二、Docker Compose 环境安装三、YAML 文件格式及编写注意事项四、Docker Compose配置…

最快桌面UI:Siticone Desktop UI 2.1.1 cRACK

富图尔主义控制 80 多个 .NET UI 组件和控件 现代未来 UI/UX 组件 为 Visual Studio 开发做好准备 无限的免费产品支持案例 超轻量和快速性能 广泛可定制和主题化 低资源消耗和占地面积 免版税开发和部署 NET 的最佳 UI 和 UX 库 从最好的图书馆探索无缝流畅的体验 使…

vue项目 运行时出现It works!却不显示页面 问题解决方案

问题描述 运行一个vue项目时&#xff0c;一切正常&#xff0c;没有报错&#xff0c;但是点开网页链接后&#xff0c;显示空白页面&#xff0c;空白页面上有个It works&#xff01; 如图所示 问题分析 It works&#xff01;页面出现说明vue项目配置正常&#xff0c;但是无法显示…

JenKins工作流程

程序员提交代码到Git/SVN仓库&#xff0c;触发钩子程序向 JenKins 进行通知&#xff0c;Jenkins 调用Git/SVN插件获取源码&#xff0c;调用Maven打包为war包&#xff0c;调用Deploy to web container插件部署到Tomcat服务器。

【AST抽象语法树】结构分析及特性

什么是AST? AST译名抽象语法树&#xff08;Abstract Syntax Tree&#xff09;&#xff0c;是一种用于表示源代码结构的数据结构。 它在编译器、解析器和静态代码分析等领域中被广泛使用。 AST结构分析 我们利用成熟的astexplorer来进行结构化的比较和分析。可以尝试登录以下网…

Fiddler学习笔记

Fiddler简介 学习Fiddler的基础前置知识 请求行又包括请求方法&#xff0c;统一资源定位符、请求协议及版本号 统一资源定位符就是资源的绝对路径 请求体里写服务器需要的参数 304是服务器没有变化&#xff0c;根据请求头发现请求的内容和本地一样&#xff0c;就不再发回来了 …

【雕爷学编程】Arduino动手做(172)---WeMos D1开发板模块2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

7.python设计模式【桥结模式】

内容&#xff1a;将一个事物的两个维度分离&#xff0c;使其都可以独立变化角色&#xff1a; 抽象&#xff08;Abstraction&#xff09;细化抽象&#xff08;RefinedAbstraction&#xff09;实现者&#xff08;Implementor&#xff09;具体实现者&#xff08;ConcreteImplement…

Ubuntu16.04LTS安装ROS测试小海龟样例

一、参考资料 在Ubuntu中安装ROS Kinetic ROS安装ubuntu16.04 无需科学上网解决sudo rosdep init初始化问题 二、安装ROS关键步骤 1. 选择ROS版本 ROS安装选择 Ubuntu版本不同&#xff0c;对应安装的ROS版本也不同&#xff0c;务必版本对齐&#xff1b;Kinetic版本的ROS对…

iPortal 注册登录模块扩展开发

作者&#xff1a;yx 文章目录 前言一、示例代码简介二、对接 iPortal REST API 接口2.1、登录模块扩展开发2.2、注册模块扩展开发 三、页面内容及样式实现四、配置启用定制页面 前言 针对注册登录模块&#xff0c;iPortal 允许用户通过 iFrame 方式接入自行开发的页面&#xf…

JavaWeb开发(后端Web开发【一】)

文章目录 前言一、Maven1.Maven概述-介绍1.1.Maven概述-介绍1.2.Maven概述-安装 2.IDEA集成Maven2.1.IDEA集成Maven-配置Maven环境2.2.IDEA集成Maven-创建Maven项目2.3.IDEA集成Maven-导入Maven项目 3.Maven-依赖管理3.1.Maven-依赖管理-依赖配置3.2.Maven-依赖管理-依赖传递3.…

Unity小游戏——怪物出现模式的管理

摘要&#xff1a;游戏启动后不久&#xff0c;画面前方将出现怪物&#xff0c;游戏的目标是不停地看到怪物并持续前进 一、怪物出现的时间节点 我们首先来看如何来确定怪物出现的间隔。 若是怪物相继出现的时间间隔很短&#xff0c;玩家就必须快速地点击按键&#xff0c;这样游…

目前新能源汽车充电桩的发展受到哪些不利因素的影响?

目前新能源汽车充电桩的发展受到哪些不利因素的影响? 一是安装难&#xff0c;很多老旧小区没有充电桩配套施工规范&#xff0c;充电桩建设比较难&#xff0c;受到充电容量不足电表箱供电等局限性的制约&#xff0c;同时缺乏充电桩配套设施的统一规划&#xff0c;小区内只能安装…

元学习(小样本)-基本概念

机器学习 概述 以分类任务为例&#xff0c;机器学习可以看作是找一个猫狗的分类函数。 step1: 设计未知函数&#xff1b;其中&#xff0c;权重和偏置都是神经元中位置参数&#xff08;可学习的&#xff09;&#xff1b;step2: 定义损失函数&#xff1b;step3&#xff1a;训练…

SpringBoot----(1)基础

目录 1 SpringBoot简介1.1 入门案例&#xff08;IDEA构建&#xff09;1.2 官网构建工程1.3 SpringBoot程序快速启动1.4 SpringBoot概述1.5 起步依赖1.6 程序启动1.7 切换web服务器 2 配置2.1 配置文件格式&#xff08;3种&#xff09;2.2 yaml格式2.3 yaml数据读取方式&#xf…

Maven-----进阶

目录 1 分模块开发1.1 分模块开发的意义1.2 分模块开发实现 2 依赖管理2.1 依赖传递2.2 依赖传递冲突问题2.3 可选依赖和排除依赖 3 继承与聚合3.1 聚合3.2 继承3.2 聚合与继承的区别 4 属性4.1 属性4.2 资源文件引用属性4.3 版本管理 5 多环境配置与使用5.1 多环境开发5.2 跳过…

【JavaSE】类和对象的封装

目录 【1】封装 【1.1】封装的概念 【1.2】访问限定符 【1.3】封装扩展之包 【1.3.1】包的概念 【1.3.2】导入包中的类 【1.3.3】自定义包 【1.3.4】包的访问权限控制举例 【1.3.5】常见的包 【2】static成员 【2.1】再谈学生类 【2.2】static修饰成员变量 【2.3】…

量子力学的应用:量子计算

亲爱的读者&#xff0c; 欢迎回到我们的量子力学系列文章。在前面的几篇文章中&#xff0c;我们已经深入探讨了量子力学的起源、基本概念、实验验证以及解释问题。今天&#xff0c;我们将聚焦在量子力学的一个引人注目的应用领域&#xff1a;量子计算。 1. 传统计算机与量子计…