module and package

模块

一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。

这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,

导入模块

import module名

导入模块时python会做三件事

1.为源文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间。

2.在新创建的命名空间中执行模块中包含的代码,见初始导入import spam

3.创建名字spam来引用该命名空间

为模块起别名

import pandas as pd

在一行导入多个模块,不推荐(可读性不强)

import pandas ,os ,time 

from  module import 变量名

将模块当脚本执行

if __name__ == ‘__main__‘:
    main()

每一个py文件都有自己的__name__      这条语句的作用:用来控制.py文件在不同的应用场景下执行不同的逻辑。

当该py文件被直接运行时,__nam__这条属性就是__mian__ ,条件成立,被执行。而当这个py文件被当模块导入时,这个__name__就等于该py文件的名字,条件不成立。可以用来测试。

模块搜索路径

python解释器在启动时会自动加载一些模块,可以使用sys.modules查看

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

需要特别注意的是:我们自定义的模块名不应该与系统内置模块重名。虽然每次都说,但是仍然会有人不停的犯错。

初始化后,python程序可以修改sys.path,路径放到前面的优先于标准库被加载。

dir函数

内建函数dir是用来查找模块中定义的名字,返回一个有序字符串列表

包(package)

1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法

2. 包是目录级的(文件夹级),文件夹是用来组成py文件(包的本质就是一个包含__init__.py文件的目录)

3. import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

__init__.py文件

不管是哪种方式,只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件(我们可以在每个包的文件内都打印一行内容来验证一下),这个文件可以为空,但是也可以存放一些初始化包的代码。

关于__pycache__

当第一次运行 python 脚本时,解释器会将 *.py 脚本进行编译并保存到 __pycache__ 目录 
下次执行脚本时,若解释器发现你的 *.py 脚本没有变更,便会跳过编译一步,直接运行保存在 __pycache__ 目录下的 *.pyc 文件

时间: 2024-10-13 07:17:18

module and package的相关文章

Python工程文件中的名词解释---Module与Package的区别

当我们在已有的Python工程文件中创建新的内容是,通常会有两种类型文件供你选择---Module和Package,对于初学者来说会搞不清楚这两种文件直接的关系.这里就来解释一下这两者之间的关系. Module简介:  中文翻译成"模块",所谓的模块其实就是能够独立的完成一组任务的代码集.在Python里面Module一般就是一个独立的.py文件(有时候也可能是多个). Package简介:  中文翻译成"包",在Python中,Package就相当于多个Modul

import 本地Python module或package

很基础很重要的一课,虽然很简单,但是防止以后忘了,还是记下来 这个笔记里说的都是import本地的,自己创建的,或者复制粘贴的别人的,总之“不是安装到library”的module or package, 所以标题里有个大写的LOCAL module what’s a module ?It’s just a python file why do we need?Because we wanna re-use code, your own code or someone others’ dir()

ABP vue+asp.net core yarn serve报 Cannot find module 'typescript/package.json错误

abp的前端在node install 安装完成了相关的依赖包,直接yarn serve运行相关服务的时候报"Cannot find module 'typescript/package.json"这个异常 这个时候只需要执行 yarn install 可以了 ABP vue+asp.net core yarn serve报 Cannot find module 'typescript/package.json错误 原文地址:https://www.cnblogs.com/albert

Python Module和Package辨析

Python 基础学习 说明 这不是最基础的新手教程,如需了解Python的数据类型.变量等基础内容,请移步:https://docs.python.org/2/tutorial/index.html 这里的代码使用Python2.7环境,没有在>3版本号环境下測试,如有不兼容等问题,欢迎交流.邮箱:[email protected] 模块(Moudule)和包(Package)辨析 module 通常模块为一个文件,直接使用import来导入就好了.能够作为module的文件类型有".p

python下module、package导入

#encoding=utf-8"""模块:1.import demo #导入demo.py下的所有的函数,调用方法为:demo.function()2.from demo import function() #从demo.py文件中导入function()函数 #调用用法:function()3. from demo import all #如果demo.py文件下设置all,则导入all变量中包含的所有函数: #可以将某些函数限定在本地使用 设置all如下: __all__

About Module and Package in Python

以非root身份安装Python的Module或者Package以及pip安装指定路径

因为要远程访问公司的服务器,没有sudo的权限,所以在安装python的一些包的时候就不能安去默认路径了(比如以/usr/local/lib/为prefix的路径). 一般来讲用easy_install或者pip来安装的时候都默认在PATHONPATH的site-packages下面,比如/usr/lib64/python2.7/site-packages. 用pip pip install --user package_name 用easy_install easy_install --pre

Python入门之面向对象module,library,package之间区别

背景 Python中有一些基本的名词,很多人,尤其是一些初学者,可能听着就很晕. 此处,简单总结一下,module,library,package之间的大概区别. Python中的module的简介 module,中文翻译为:模块 Python中的module,说白了,就是Python文件,而python文件一般后缀为py,所以就是你的xxx.py而已. library简介 library,中文翻译为:库,也常称为:库文件 之所以此处不说是Python中的library,那是因为,本身libra

Lua 学习之基础篇七<Lua Module,Package介绍>

Lua 之Module介绍 包管理库提供了从 Lua 中加载模块的基础库. 只有一个导出函数直接放在全局环境中: [require]. 所有其它的部分都导出在表 package 中. require (modname) 加载一个模块. 这个函数首先查找 [package.loaded] 表, 检测 modname 是否被加载过. 如果被加载过,require 返回 package.loaded[modname] 中保存的值. 否则,它会为模块寻找加载器. require 遵循 [package.