模块与包之间的调用

一. 模块

定义: 如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。

模块可以分为自定义模块、内置模块和第三方模块

1.内置模块

2.第三方模块

3.自定义模块

什么叫自定义模块? 自定义模块就是你自己编写的模块 ,在Python中,其后缀名是.py 就是一个模块

  • 例如: 在Pycharm里建个py文件module,写入代码:

    def say_hi():

    print(‘name‘)

    say_hi() #这样就创建了一个模块.可以添加多个函数,跟正常的python文件一样

二. 包: 用来从逻辑上组织模块。本质就是一个目录(必须带有一个int.py文件)

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为(Package),包名通常为全部小写,避免使用下划线.包是模块的集合,比模块又高一级的封装。没有比包更高级别的封装,但是包可以嵌套包,就像文件目录一样.

最顶层的Django包封装了contrib子包,contrib包又封装了auth等子包,auth又有自己的子包和一系列模块。通过包的层层嵌套,我们能够划分出一个又一个的命名空间。

三. 模块与包之间的互相导入

   在我们的程序中,使用其它的模块(包、类、函数),就必须先导入对应的模块(包、类、函数)。在Python中,模块(包、类、函数)的导入方式有:

1.在绝对路径下,导入自定义的模块.绝对路径指在一个包文件下的.py互相导入

路径说明:core为包文件,Module_a,Main.py为core的俩个py文件

方式一 :import  模块名

比如,被导入的模块Module_a:

# Module_a.py
def func():
    print("this is module A!") 

在Main.py中导入Module_a:

# Main.py
import module_a   #import  模块名
module_a.func()  # 调用方法  模块名.函数名() #注意中间有个点 

方式二:from 模块名  import 函数名

在Main.py中导入Module_a:

# Main.py
from module_a import func
module_a.func()   # 错误的调用方式
func()  # 这时需要直接调用func

方式三: form 模块名 import * 将对象内的所有内容全部导入

A.在Main.py中导入Module_a: 导入单个函数

from module_a import *
func()
返回:this is module A!

B.如果针对导入的模块内有多个函数.需要导入并使用:

#module_a.py
def func():
    print("this is module A!")

def fun123():
    print(‘this is fun123

在Main.py中导入Module_a: 导入多个函数

from module_a import *
func()
fun123()
返回:
this is module A!
this is fun123

C:需要注意的是:在main.py模块内定义的函数名与module_a的名称一样,就会被覆盖,尽量做到不与函数名重复.

# Main.py
from module_a import *
def func():
    print("this is main module!")

func()  # 从module导入的func被main的func覆盖了

2.在相对路径下导入包,包与包之间的相互调用:

路径说明:在图中 modile11, bin, core 都是包,并且bin和core是modile11的子包 .

在这种相对路径下导入,子包与子包的相互调用,需要用到os,sys模块将路径添加到环境变量里.

以图为例子:在子包bin文件下的`run.py`文件要导入core子包的`module_a.py`文件信息. 就要先找到`bin`,`core`的共同父级目录
添加到环境变量
import os
import sys
DIR =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(DIR)
sys.path.append(DIR)

比如,被导入的模块Module_a:

# Module_a.py

def func():
    print("this is module A!")
#def fun123():
   # print(‘this is fun123‘)

方式一: from 包名 import 模块名

from core  import module_a
module_a.func()  #调用方法  模块名.函数名()
module_a.fun123()  #针对module_a模块内有多个函数也可这样使用
返回:
this is module A!

方式二: from 包名. 模块名 import *

from core.module_a  import *
func()         #调用方法  函数名()
#fun123()       #针对module_a模块内有多个函数也可这样使用
返回:
this is module A!

需要注意的是:

在包与包之间的导入,在实际应用中用的比较多,如果被导入的模块函数比较多,也可这样使用.

四:模块搜索路径

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

Python根据sys.path的设置,按顺序搜索模块。

当然,这个设置是可以修改的,就像windows系统环境变量中的path一样,可以自定义。 通过sys.path.append(‘路径‘)的方法为sys.path路径列表添加你想要的路径。 如 图中,添加到环境变量的例子.

原文地址:https://www.cnblogs.com/sunny7/p/9921885.html

时间: 2024-10-10 11:01:21

模块与包之间的调用的相关文章

python模块与模块之间的调用、包与包之间的调用

模块与模块之间的调用: 1.一个python工程就是一个包,在一个包中可以有多个python文件,一个python文件就是一个模块,一个模块当中可以有类.函数.变量,在我们的工作当中,经常会遇到模块与模块之间的调用 2.调用时,模块的类.函数.变量引入方式.新建first模块,first模块包含类.函数.变量.新建second模块,second模块调用first模块当中的类.函数.变量 first模块: #类class index(object): #类当中的方法 def hello(self)

当导用模块与包的import与from的问题(模块与包的调用)

当在views.py里写impor models会不会报错呢? 1.Python里面的py文件都是每一行的代码. 2.Python解释器去找一个模块的时候,只去sys.path的路径里找 3.django项目启动(django项目的启动文件是manage.py)启动项目是将manage.py的路径添加如:F:\pylx\day75\form_lx\manage.py 添加到sys.path就是按这里面的顺序去找 4.单独执行脚本(一个py文件),把当前文件路径添加到sys.path里面, 模块与

Python学习---模块和包

模块: 一个模块就是一个包含Python代码的文件,一个文件就是一个模块 为什么使用模块 1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护和管理 2.模块可以增加代码的重用率 3.模块可以当做命名空间 如何定义自己的模块 模块本身就是一个文件,所有py代码都可以在文件中直接书写,不过我们开发公用模块时,最好在模块中书写一下内容 变量 模块中的属性 函数 单独的功能 类 相似功能组合 模块测试代码 临时使用,被导入时不会执行 测试代码: 测试代码经常在开发模块时用于测

Python中函数、类、模块和包的调用

初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. ?(1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么可以直接调用,即:summ(1,2) (2) 类 类定义好之后,不能像函数一样直接调用,而需要间接调用. 比如:class people,那么调用时,a=people(对象),之后,a.age()等等 (3) 模块 将多个类放在同一个py下,比如放在model.py中,则import model即可

Day 28(06/28)模块与包的调用

模块与包的调用 模块(modue)的概念 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性. 其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,

python模块与包的调用

模块(module) 什么是模块 一个 .py文件 就是一个模块(Module).在开发过程中我们不会把所有的代码都写在一个 .py文件 中.随着代码量的增大,可以按照功能将函数或者类分开存放到不同的 .py文件 中.?这样代码更方便管理,以及后期的维护,也便于其他程序来调用当前已经实现的功能~?在开发过程中,我们也经常引用其他模块,例如:time,os,configparser,re 等等在Python中模块一般有如下3种:1)Python内置模块2)第三方模块3)自定义模块 模块的导入 im

python 模块,包,变量的调用方法

#模块用来组织函数的 #包是用来组织模块的 #判断是否为包,主要是看是否有_init_.py #bin与bao有什么关系 #调用模块或者包的方法一览 # import time,sys 系统模块可以直接调用,用“,”分割 # import calculte 调用同文件夹的模块,使用方法calculte.add(1,8),add为变量或者方法 #from calculte import add,sub,这个方法可以直接使用add(),避免变量重复. #from calculte import *,

不同模块之间的调用

首先,在模块中写入自己要调用的最小单元模块 如下图,或者其他模块 再到其他class的方法中调用这个最小模块的方法 原文地址:https://www.cnblogs.com/nieliangcai/p/8118397.html

2015/9/15 Python基础(12):模块和包

模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入一个模块,允许使用其他模块的属性利用之前的工作成果,实现代码重用.那些自我包含并且有组织的代码片段就是模块(module),将其他模块中属性附加到你的模块中的操作较导入(import) 模块是逻辑上的说法,而它们在物理层是一个个独立的文件,模块的文件名就是模块的名字加拓展名.py.与其他可以导入类的