美文网首页
09-模块和包

09-模块和包

作者: 努力爬行中的蜗牛 | 来源:发表于2018-10-30 18:13 被阅读1次
模块的概念

模块是python程序架构的一个核心概念。

  • 每一个以.py结尾的python源代码都是一个模块。
  • 模块名也是一个标识符,需要符合标识符的规则。
  • 在模块中定义的全局变量、函数和类都是提供给外部使用的工具。
  • 模块就好比工具包,要想使用这个工具包中的工具,就需要导入这个模块。
  • 导入模块使用 import
语法:
# 方式1
import 模块1,模块2

# 方式2:推荐使用
import 模块1
improt 模块2
导入模块是指定别名
语法:
# 注意:模块的别名应该符合大驼峰法
import 模块名 as 别名
from ... import
  • 如果希望王从某一个模块中,导入部分工具,就可以使用from ... import的方式
  • import是一次性把模块中的所有内容全部导入,并且通过模块名/别名访问
# 从模块导入某一个工具
from 模块名1 import 工具名

from hm_01_测试模块1  import Dog
from hm_01_测试模块1  say_hello

# 使用时不再需要模块名
sayHello()

wangcai = Dog()

注意:如果两个模块中,存在相同的函数名,那么后倒入的模块会覆盖掉先导入的模块的函数,如果希望同时使用两个函数,可以使用别名的方式来调用。

from hm_01_测试模块1  say_hello as module_say_hello
from hm_01_测试模块2  say_hello

say_hello 
module_say_hello
from ... import * 也可以一次性导入所有内容,但不推荐使用。
模块搜索顺序

python解释在导入模块时,会:

  • 搜索当前目录指定的模块名文件名,如果有就直接导入
  • 如果没有,在搜索系统目录

python中,每一个模块都有一个内置属性__file__可以查看模块的完整路径
注意:在开发中,不要命名和系统模块同名的文件。

import  random

print(random.__file__)
rand = random.randint(0, 10)
print(rand)
开发原则
  • 一个独立的python文件就是一个模块
  • 在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍。

__name__属性

  • __name__属性可以做到,测试模块的代码只在测试情况下运行,而在被导入时不会被执行。
  • __name__是一个python的一个内置属性,记录着一个字符串
  • 如果是被其他文件导入的,__name__就是一个模块名
  • 如果当前执行的程序__name__是__main__
def say_hello():
    print("你好,这是测试")

# 如果直接执行莫夸夸,__main__,否则是模块名
if __name__ == "__main__":
    print(__name__)
    # 文件名被导入时,能够直接执行的代码不需要被执行
    print("小明开发的模块")
    say_hello()
包的概念
  • 包是一个包含多个模块的特殊目录
  • 目录下有一个特殊的文件__init__.py
  • 包的命名方式和变量一样,小写字符 + _
  • 使用import 包名可以一次性导入所有模块

创建包的方式有两种:

  • 点击右键-新建目录-创建__init__.py文件
  • 点击右键-新建python package即可

要在外界使用包中模块,需要在__init__.py文件中指定对外提供的模块。

发布模块

如果希望自己开发的模块,分享给其他人,可以按照以下步骤进行操作
1. 制作发布压缩包步骤:

  • 创建setup.py文件
from distutils.core import setup

setup(name="hm_message",  # 包名
      version="1.0",  # 版本
      description="itheima's 发送和接收消息模块",  # 描述信息
      long_description="完整的发送和接收消息模块",  # 完整描述信息
      author="itheima", # 作者
      url="www.itheima.com",  # 主页
      py_module=["hm_message.send_messge",
                 "hm_message.receive_message"])
  • 构建模块
python3 setup.py build
  • 生成发布压缩包
python3 setup.py sdist

2. 安装模块

tar -zxvf hm_message-1.0.tar.gz
sudo python3 setup.py install

3. 卸载已经安装过的模块
直接从安装目录下,把安装模块的目录删除即可。可以使用模块.__file__查询模块所在目录。

cd 安装模块目录
rm -r 模块目录
pip安装第三方模块
  • 第三方模块通常是指由知名的第三方团队开发的并且并程序员广泛使用的包/模块
  • pip是一个现代的,通用的python包管理工具
  • 提供了对python包的查找,下载,安装,卸载功能

安装和卸载功能如下:

# 将模块安装到Python2.x环境
sudo pip install pygame
sudo pip uninstall pygame

# 将模块安装到Python3.x环境
sudo pip3 install pygame
sudo pip3 uninstall pygame

mac下安装ipython

sudo pip insatall ipython

相关文章

  • 09-模块和包

    模块的概念 模块是python程序架构的一个核心概念。 每一个以.py结尾的python源代码都是一个模块。 模块...

  • 2018-08-13

    模块和包的定义 import 和 from import包和模块的引入import引入一个模块import 模块名...

  • 笔记:Python的包和模块的区别

    Python中的模块和包的英文表示: 模块的英文:Module 包的英文:Packages 对模块和包的类比理解:...

  • Python学习笔记7

    异常处理包和模块 包和模块的一般操作 导入操作的本质 模块检索的路径 导入模块的场景 第三方包和模块的安装 异常处...

  • 模块和包

    模块 1.一个python文件就是一个模块 当导入一个模块,就相当于执行了这个模块,创建该模块的命名空间,将模块中...

  • 包和模块

    1、包和模块 什么是包(lib)? 什么是模块(module)? 常见模块或者包的导入方式 1、如果是普通文件夹,...

  • 包和模块

    一、python中包和模块的区别: 1.包:包含 文件的文件夹,导入模块的可通过 变量。2.模块:编写python...

  • 模块和包

    封装包很简单。在文件系统上组织代码,并确保每个目录都定义了init.py文件 (http://upload-ima...

  • 包和模块

    1、python模块(module) 在计算机实际的开发过程中,随着代码量的不断增加,如果放在一个文件中会变得越来...

  • 模块和包

    包和模块: 包(lib):通常包总是一个目录,可以使用import导入包,或者from + import来导入包中...

网友评论

      本文标题:09-模块和包

      本文链接:https://www.haomeiwen.com/subject/yiwgtqtx.html