iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python3之模块、包
  • 917
分享到

Python3之模块、包

模块 2023-01-31 01:01:06 917人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、模块 1.模块的导入方式 import random,time #导入多个模块 #使用,如:random.randint(1,10) #使用,如:time.sleep(1) from random import randin

一、模块

1.模块的导入方式

import random,time
#导入多个模块
#使用,如:random.randint(1,10)
#使用,如:time.sleep(1)

from random import randint
#使用,如:randint(1,10)

from random import *
#导入所有功能
#使用,如:unifORM(1,2)
#但不建议这样用,
# 因为当导入多个模块时,可能有同名的方法,这时只会调用最后导入的模块中的方法

import random as rd
#当某些模块名较长时,可以将模块重命名

注意:
1.当导入模块时,最先在当前路径下查找,没找到才会到系统中查找,所以py文件不要与模块名重名
2.当导入模块时,实际上是先把模块程序执行一遍,所以当想将自己的py文件作为自定义模块时,测试部分的代码前应加上如下语句:

#此处为实现某些功能的程序

if __name__ == '__main__':
    #此处调用功能进行应用
    '''
    当本程序调用上面的功能时,__name__会返回字符串'__main__';当被别的程序导入调用时,会返回“模块的名字”
    '''

2.模块中的__all__
当使用from xx import *时,为防止导入其他不必要的东西,可以在自定义的模块中加上
__all__ = [‘函数名’,’全局变量名’,’类名等等’](注意名称必须用字符串形式放在列表中)
这时,from x import *时,只会导入列表中指定的功能

举个栗子:

'''
#yyy.py中的代码

__all__ = ["fun1"]

def fun1():
    print("---fun1---")
def fun2():
    print("---fun2---")
'''
from yyy import *
import yyy as test
fun1()
try:
    fun2()
except Exception as exc:
    print("调用fun2()异常:",exc)
print("*********"*6)
test.fun2()

运行结果:

F:\python_projects\venv\Scripts\Python.exe F:/python_projects/test.py
---fun1---
调用fun2()异常: name 'fun2' is not defined
******************************************************
---fun2---

进程已结束,退出代码0

运行结果可见:由于__all__ = ["fun1"]中没有”fun2”,所以尽管导入了所有,但是也只能调用fun1函数。当然,可以通过import yyy方式
调用。

二、包

包就是将多个模块放在文件夹中,这个文件夹就是包;当然,这个文件夹与日常文件夹有点不同
不同之处在于,该文件夹下除其他文件外,还有一个__init__.py文件,如图所示。
当有这个文件时,就可以在包和需要导入包的程序处于同一目录的情况下,调用包中的模块了。不过仅限于使用from test_all import test_all_1,test_all_2(不能用from test_all import *),使用时也需要像test_all_1.fun1()这样调用

这里写图片描述
包内文件

__init__.py在导入(import)包时,会自动执行。
所以,解决上述问题的方法为:在__init__.py中写如下代码:

__all__ = ["test_all_1","test_all_2"]
#该句的作用是:可以用from test_all import *导入列表中指定的所有模块
#这时就可以用"test_all_1.fun1()"形式调用函数了,但是不能通过import test_all导入

from . import test_all_1,test_all_2
#加上该句,则可以通过import test_all导入,然后通过test_all.test_all_1.fun1()调用

在完成上述步骤后,还有一个问题,就是“包和需要导入包的程序必须处于同一目录”才可以导入,接着往下

三、模块的发布与安装

下面是完整的包文件夹:

这里写图片描述
图左边为文件夹内容


新建了一个mymodule文件夹:包含一个setup.py文件以及前面的test_all文件夹,setup.py中需写入,代码:

from distutils.core import setup

setup(name="XiaoDong",version="1.0",description="XiaoDong's module",author="XiaoDong",
      py_modules=['test_all.test_all_1','test_all.test_all_2'])
'''
name为一会儿生成的.tar.gz包的名字;
version为版本号
description为对库的介绍
author为开发人员名字
还有其他的参数,比如邮箱等,详情可以到官网https://docs.python.org/3/distutils/index.html查看
'''

然后,在windows命令行中,切换到mymodule文件夹中,执行python setup.py build,注意:我只装了python3,这样生成的库只能python3用;要生成python2的库,就用python2执行。
接着,再执行python setup.py sdist,就完成了

这里写图片描述

这时发现,mymodule文件夹下生成了一些文件,如图:
这里写图片描述
这里写图片描述


图中的“XiaoDong-1.0.tar.gz”就是python库了,可以随便发给别人安装使用

将“XiaoDong-1.0.tar.gz”解压:

这里写图片描述

然后,在命令行切换目录到setup.py文件夹下,执行python setup.py install
这里写图片描述

此时就安装成功了,可以在任意py文件中调用了
这里写图片描述

更详细发布python模块请看官方文档(Https://docs.python.org/3/distutils/index.html)


文章主要是本人在学习python过程中的一些笔记,便于后期复习,所以某些地方不会很详细。由于个人水平的限制,若有错误的地方,还请指正。代码部分是在python3.7环境下测试。

--结束END--

本文标题: Python3之模块、包

本文链接: https://www.lsjlt.com/news/184182.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3之模块、包
    一、模块 1.模块的导入方式 import random,time #导入多个模块 #使用,如:random.randint(1,10) #使用,如:time.sleep(1) from random import randin...
    99+
    2023-01-31
    模块
  • 【Python3】Python模块与包
    一、模块导入 1. 定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。 模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代码分配到一个...
    99+
    2023-01-31
    模块 Python
  • python3--os模块,模块和包(import... , from..import...)
    os模块是与操作系统交互的一个接口使用前需要 import osos.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变...
    99+
    2023-01-30
    模块 os import
  • python3之DNS处理模块dnspy
    dnspython(http://www.dnspython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩...
    99+
    2023-01-31
    模块 DNS dnspy
  • python之模块和包
    1 模块化 一般来说,编程语言中,库,包,模块是同一种概念,是代码组织方式 python中只有一种模块对象类型,但是为了模块化组织的便利,提供了一个概念: 包模块(module):指的是python的源代码文件 包(package):指...
    99+
    2023-01-31
    模块 python
  • python3中_from...import...与import ...之间的区别详解(包/模块)
    目录前言1.import ...2.from ... import ...3.引用也有区别4.引用优化总结前言 【以下说明以tkinter模块为例进行说明】 【下图为安装后在pyth...
    99+
    2024-04-02
  • python3-os模块
    # Auther: Aaron Fanimport oscmd_res1 = os.system("dir")      #执行命令,但是不保存结果cmd_res2 = os.popen("dir").read()   #执行命令,并保存结...
    99+
    2023-01-31
    模块 os
  • 【Python3】pymysql模块
    1. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 ...
    99+
    2023-01-31
    模块 pymysql
  • python3-sys模块
    # Auther: Aaron Fanimport sysprint(sys.path)     #打印环境变量print(sys.argv)     #打印脚本名和脚本所带的所有参数print(sys.argv[2])  #打印脚本所跟的...
    99+
    2023-01-31
    模块 sys
  • python3--模块和包,软件开发规范
    模块搜索路径python解释器在启动时会自动加载一些模块,可以使用sys.modules查看在第一次导入某个模块时(比如my_module),会检查该模块是否已经被加载到内存中(执行文件的名称空间对应的内存),如果有则直接引用,如果没有,解...
    99+
    2023-01-30
    模块 软件
  • Python3: datetime模块
    datetime模块定义了以下几个类: datetime.date: 表示日期的类,常用的属性有year, month, day; datetime.time: 表示时间的类,常用的属性有hour, minute, second, micr...
    99+
    2023-01-31
    模块 datetime
  • Python3 删除已安装的模块或包
    方法一: 使用pip安装pip$ wget https://bootstrap.pypa.io/get-pip.py$ python get-pip.py 删除指定的模块或者包, 在命令提示符cmd下用如下命令:pip uninstall...
    99+
    2023-01-31
    模块
  • Python入门之模块与包
    模块指的是Python的程序文件(源文件),模块的文件名就是模块名加上.py,里面包含了Python对象定义和Python语句,模块包含了定义函数、类和执行代码等等。模块提高了代码的...
    99+
    2024-04-02
  • python3--协程,greenlet模块,gevent模块
    python之路——协程引子之前学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗...
    99+
    2023-01-30
    模块 协程 gevent
  • python3--序列化模块,hashlib模块
    内置方法(回顾)__len__    len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度__hash__   hash(obj)的结果依赖于obj.__hash__()的结果,计算对象...
    99+
    2023-01-30
    模块 序列化 hashlib
  • python3:常用模块
    calendar time datetime timeit os shutil zip math string 上述所有模块使用理论上都应该先导入,string是特例 calendar,time,datetime的区别参考中文...
    99+
    2023-01-31
    模块 常用
  • Python3 中 random模块
    Python中的random模块用于生成随机数。 下面具体介绍random模块的功能: #用于生成一个0到1的 随机浮点数:0<= n < 1.0 import random a = random.random() pri...
    99+
    2023-01-31
    模块 random
  • Python3 日志模块
    Python3 日志模块 python3 日志模块官网说明python中日志等级从高到低依次为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET 默认的日志等...
    99+
    2023-01-31
    模块 日志
  • python3 时间模块 random模
    话不多说,一个是算时间的,还有一个是生成验证码的  1 #!usr/bin/env/ python 2 # -*- coding:utf-8 -*- 3 # Author: XiaoFeng 4 import time 5 s...
    99+
    2023-01-31
    模块 时间 random
  • python3--模块configparser,logging,collections
    configparser模块该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)创建文件import configparserconfig = configpar...
    99+
    2023-01-30
    模块 configparser collections
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作