龙空技术网

一文详解Python模块和包

黑猫编程 2047

前言:

如今小伙伴们对“python模块搜索路径”大体比较关怀,咱们都想要学习一些“python模块搜索路径”的相关内容。那么小编在网摘上收集了一些有关“python模块搜索路径””的相关资讯,希望各位老铁们能喜欢,看官们快快来了解一下吧!

什么是模块?

一个函数用来封装一个功能,但是,一个软件的设计不可能都只写在一个文件里面,将一些常用功能放到一个文件中,就是模块。模块的本质就是一个.py文件。

为什么要使用模块?将程序分成一个个的功能文件,更加方便管理以及重复使用提升开发效率,避免重复造轮子模块的分类内置模块:比如之前学习过的time、random模块第三方模块:比如pygame模块,需要自己使用pip安装 pip install pygame自定义模块,比如起个名字叫做ayst.py导入模块(import 模块名)

每个模块都是一个独立的命名空间,定义在这个模块中的函数,把这个模块的命名空间当做全局命名空间,两个不同模块中的同名变量不会发生冲突

模块第一次被导入后就将模块加载到内存中,重复导入模块会直接引用内存中已经加载好的结果

模块导入方式import 模块名import 模块名 as 新名称from …… import ……模块文件中的测试代码

一个模块中的功能也是需要进行测试的,但是,模块被导入时,就会自动执行模块中的print语句

脚本:直接作为文件执行 __name__ 等于 __main__模块:被导入执行 __name__ 等于 模块名

class People:    def __init__(self, name, gender, age):        self.name = name        self.gender = gender        self.age = agea = 1b = "hello"print("哈哈哈,我导入就被执行了")# 内置全局变量 __name__print(__name__)if __name__ == "__main__":    print("只有以脚本形式运行我才会执行")
内置模块:sys模块

与解释器交互的接口

sys.argv 传递命令行参数sys.version 获取python解释器版本信息sys.platform 返回操作系统平台名称sys.modules Python解释器启动时加载到内存中的模块sys.path 返回模块的搜索路径

import sysprint(sys.version)print(sys.platform)print(sys.path)print(sys.modules)print(sys.argv)print(sum([int(i) for i in sys.argv[1:]]))

执行代码:python3 demo.py 1 2

模块的搜索路径内存中已经加载的模块 sys.modules内置模块依次查找sys.path列表中的模块

注:模块名不可以与系统内置模块重名

我们自定义的模块如果全部放在site-packages文件夹下面,时间久了会非常混乱,因此可以创建一个文件夹专门存储模块

import syssys.path.append('D:\cat')import helloprint(hello.info)
包:什么是包?包就是一个包含__init__.py的文件夹,创建包的目的就是为了将文件组织起来Python3中,包下面没有__init__.py,导入包不会报错,而Python2中会报错创建包就是为了导入,而不是直接运行导入规则凡是导入时带点的,点的左边一定是包的名字import catimport cat.examples.testimport cat.examples.test as tfrom cat.db import registerfrom cat.api import *

注:__all__ = ["manage", "versions"]可以限定导入的模块

文件中代码:

cat/__init__.py:from . import apiprint("我是包下面的init文件")

api:

api/__init__.py:from . import runprint("我是api下面的init文件")__all__ = ["manage", "versions"]
api/manage.py:def f1():    print("I am api.manage")
api/run.py:def f1():    print("I am api.run")
api/versions.py:def f1():    print("I am api.versions")

db:

db/__init__.py:print("我是db下面的init文件")
db/register.py:def f1():    print("I am db")
相关推荐Python语言print语句和变量使用 一文详解Python面向对象编程 人生苦短,我用Python,初学者最友好的编程语言 一文详解Python函数,实现特定功能的代码模块 一文详解Python语言选择结构和循环结构 一文详解Python常用数据类型,列表、字典、元组和集合

标签: #python模块搜索路径