我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python3之模块、包

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python3之模块、包

一、模块

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环境下测试。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python3之模块、包

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

下载Word文档

猜你喜欢

Python3之模块、包

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

【Python3】Python模块与包

一、模块导入1. 定义Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你
2023-01-31

python3--os模块,模块和包(import... , from..import...)

os模块是与操作系统交互的一个接口使用前需要 import osos.getcwd()获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname")改变当前脚本工作目录;相当于shell下cdos.curdir
2023-01-30

python3之DNS处理模块dnspy

dnspython(http://www.dnspython.org/)是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)
2023-01-31

python之模块和包

1 模块化一般来说,编程语言中,库,包,模块是同一种概念,是代码组织方式 python中只有一种模块对象类型,但是为了模块化组织的便利,提供了一个概念: 包模块(module):指的是python的源代码文件 包(package):指的是模
2023-01-31

Python3 删除已安装的模块或包

方法一: 使用pip安装pip$ wget https://bootstrap.pypa.io/get-pip.py$ python get-pip.py 删除指定的模块或者包, 在命令提示符cmd下用如下命令:pip uninstall
2023-01-31

python3--模块和包,软件开发规范

模块搜索路径python解释器在启动时会自动加载一些模块,可以使用sys.modules查看在第一次导入某个模块时(比如my_module),会检查该模块是否已经被加载到内存中(执行文件的名称空间对应的内存),如果有则直接引用,如果没有,解
2023-01-30

python3-sys模块

# Auther: Aaron Fanimport sysprint(sys.path)     #打印环境变量print(sys.argv)     #打印脚本名和脚本所带的所有参数print(sys.argv[2])  #打印脚本所跟的
2023-01-31

Python3: datetime模块

datetime模块定义了以下几个类: datetime.date: 表示日期的类,常用的属性有year, month, day; datetime.time: 表示时间的类,常用的属性有hour, minute, second, micr
2023-01-31

【Python3】pymysql模块

1. 什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure
2023-01-31

python3-os模块

# Auther: Aaron Fanimport oscmd_res1 = os.system("dir")      #执行命令,但是不保存结果cmd_res2 = os.popen("dir").read()   #执行命令,并保存结
2023-01-31

python3--协程,greenlet模块,gevent模块

python之路——协程引子之前学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗
2023-01-30

python3--序列化模块,hashlib模块

内置方法(回顾)__len__ len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度__hash__ hash(obj)的结果依赖于obj.__hash__()的结果,计算对象的hash值__eq__ obj
2023-01-30

Python3 日志模块

Python3 日志模块python3 日志模块官网说明python中日志等级从高到低依次为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET 默认的日志等级为:WARNING,即在显示日
2023-01-31

python3:常用模块

calendartimedatetimetimeitosshutilzipmathstring上述所有模块使用理论上都应该先导入,string是特例calendar,time,datetime的区别参考中文意思关于log模块请参考:log模
2023-01-31

Python3 中 random模块

Python中的random模块用于生成随机数。下面具体介绍random模块的功能:#用于生成一个0到1的随机浮点数:0<= n < 1.0import random a = random.random()print (a) #用于生成一
2023-01-31

python3 时间模块 random模

话不多说,一个是算时间的,还有一个是生成验证码的  1 #!usr/bin/env/ python 2 # -*- coding:utf-8 -*- 3 # Author: XiaoFeng 4 import time 5 start_ti
2023-01-31

python3 time模块解释

time() 模块继承自 Object 类,datetime() 模块继承自 Object 下面的 Date() 模块。time 提供的功能更加接近于操作系统层面,其所能表述的日期范围被限定在 1970 - 2038 之间,如果要处理更广的
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录