precondition:比如我有如下这样的文件目录结构

说明:add和debug两个包都隶属于src目录,它们是同级目录,其中在add路径下有一个add.py的模块,里面定义了一个jiafa()的函数,实现两数相加并输出总和。

现在要实现如下几个调用功能:

1、在debug2文件实现直接调用add模块进行求和

2、在debug1文件中实现调用add模块进行求和

注意:要实现一个模块要能被另外其它模块正常调用,则在对应模块所在的文件夹下新建一个__init__.py的空文件(这个文件作用就是表示当前该文件夹为一个包,只有是包才能被其它模块所调用)

add.py文件中定义了一个jiafa()的函数,代码如下:

 #-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
def jiafa(a,b):
print "a + b is:",a + b
return a + b

一、下面介绍实现第一个功能方法如下,在debug2.py文件中这样进行调用

 #-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
import add print add.jiafa(11, 22)

输出:

a + b is: 33
33

总结:如果是在同一个包里面(也就是同一级目录),如果要调用其它模块的话,可以在程序中直接使用 “import 模块名”即可,例如上例中 import add

二、下面介绍第二个功能的实现方法,在debug1文件中可以使用这三种方法进行调用:

方法1、

 #-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
from add.add import jiafa
print jiafa(1, 4)

输出如下

a + b is: 5
5

总结1:模块间相互调用且不在同一个包里面(不在同一级目录),则使用 ”from 包名.模块名 import 函数名“,如果要调用多级目录里面的话(前提是每一级目录里面都要新增这个__init__.py的空文件),就这样 "from xxxx.xxx.xx.x import yy",例如上例中的 ”from add.add import jiafa“

方法2、

 #-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
from add.add import *
print jiafa(2, 4)

输出如下:

a + b is: 6
6

总结2:在实际应用中,一个模块文件中不可能就只放一个函数,这样就像上面”总结1“里面的方法有个缺陷,如果要使用同一个模块里面其它函数的话,则又要重新导入一次要使用的函数,很麻烦,为了省事,就可以这样 "from xxx.xx.x import * ",用 * 号代表模块文件x中所有的函数,这样就可以全部导入进来

方法三、

 #-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
import add.add
sum = add.add.jiafa(3,4)
print sum

输出如下:

a + b is: 7
7

总结3:该方法跟第一个功能一样,只不过一个是在同级目录,一个是在不同目录里面。

写在最末尾:在实际编码过程中,为了统一编码规范,在导入第三方模块时,上面import xx 和 from xx import yy两种方法最好统一使用一种,不要混合使用,这样比较利于提高程序的可读性。

【python】关于python中模块导入的总结的更多相关文章

  1. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  2. python学习日记(模块导入)

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  3. python基础之import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  4. Python开发基础-Day16import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  5. python - 路径处理 和 模块导入

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_模块导入.py@ide: PyCharm Community E ...

  6. 关于php,python,javascript文件或者模块导入引入的区别和联系

    前言: 我们经常看到编程语言之间,文件或者模块的引来引去的,但是他们在各个编程语言之间有什么区别和联系呢? 1.javascript (1).全局引入方式: <script src='xxxxx ...

  7. python中模块导入问题(已解决)

    想在python中导入request包: 无此模块,于是先安装requests包: 但是提示"Requirement already satisfied".在提示的相应目录里,找到 ...

  8. maya_help()验证编程过程中模块导入的情况

    import rigLib reload(rigLib.base.control)spine = rigLib.base.control.Control( prefix = 'spine1') hel ...

  9. Django 1.11 shell中模块导入问题

    django报错:django.core.exceptions.ImproperlyConfigured: 处理办法 import os os.environ['DJANGO_SETTINGS_MOD ...

随机推荐

  1. .3-浅析webpack源码之预编译总览

    写在前面: 本来一开始想沿用之前vue源码的标题:webpack源码之***,但是这个工具比较巨大,所以为防止有人觉得我装逼跑来喷我(或者随时鸽),加上浅析二字,以示怂. 既然是浅析,那么案例就不必太 ...

  2. .Net下SQLite的DBHelp

    怎样获取SqLite请参考初识SqlLite ---.net连接数据库,怎样在SQLite使用Linq请参考在C#中利用Nuget包使用SQLite数据库和Linq to SQLite using S ...

  3. bind(port)与.localAddress(new InetSocketAddress(port))区别

    两者并没有什么区别,最后都会调用AbstractBootstrap这个抽象类的bind()方法.

  4. TF-IDF原理

    什么是TF-IDF TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率).  是一种用于资讯检索与资讯探勘的常用加权技术.TF-IDF ...

  5. VS C#文件的复制

    /// <summary> /// 复制目录 /// </summary> /// <param name="OldDirectoryPath"> ...

  6. JavaScript数组&类数组转换

    一.数组 在JavaScript中数组可以容纳任何类型的值,可以是数字.字符串.对象.甚至其他数组(多为数组) var a = [1,'2',[3]]; a.length;//3 a[0];//1 a ...

  7. 微信小程序获取当前地址以及选择地址详解 地点标记

    首先定义事件: bindtap='getLocation' <view class='store-bot' bindtap='getLocation'> <view class='c ...

  8. avalonjs 中的if else实现的几种方法

    在学习avalonjs的过程中,发现模板中并没有if else这样的写法,不像tempalte ejs这些,所以总结了三种方法来实现,仅供在使用avalonjs的同学参考,主要是通过ms-if 表达式 ...

  9. Git冲突与解决方法

    1.git冲突的场景 情景一:多个分支代码合并到一个分支时: 情景二:多个分支向同一个远端分支推送代码时: 实际上,push操作即是将本地代码merge到远端库分支上. 关于push和pull其实就分 ...

  10. 葡萄城报表 SP2新特性(2)— 智能钻取下级报表

    中国式复杂报表常常会因为一些特殊的行业规范存在着一些复杂的需求,对于报表的功能要求不仅要广而全,还要精细到行业内部,葡萄城报表近几年来也一直致力于解决中国式复杂报表的需求,一直持续增强中国式复杂报表的 ...