import 和 from 调用

module 目录有calc.py 和  test.py 两个文件

calc.py文件内容:

def add(x,z):
return x+z def sub(x,z):
return x-z

test.py文件调用:

import calc  #默认是同级目录下面查找
print(calc.add(1,2)) from calc import sub
print(sub(10,5))
导入模块按照下面方式查找
import sys
print(sys.path)
['D:\\Study\\module', 'D:\\Study','C:\\Program Files (x86)\\Python36-32\\python36.zip', 'C:\\Program Files (x86)\\Python36-32\\DLLs', 'C:\\Program Files (x86)\\Python36-32\\lib', 'C:\\Program Files (x86)\\Python36-32', 'C:\\Program Files (x86)\\Python36-32\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm 2018.1.1\\helpers\\pycharm_matplotlib_backend']

总结下:

  执行py文件的,执行文件的中的import 模块,只会导入当前执行文件的路劲导入文件,不会去其他目录查找(除系统提供的目录外).

  

例: 有如下一个目录结构的

  calc文件内容如下:

test文件内容如下:

  

a文件内容如下:

调用:a.py 发现会报错

为什么报错了?

a.py --> 导入 from module import test (执行module目录中test文件)   --> test 文件 import calc (报错) --> 因为当前执行的a.py文件 在当前目录找到calc(就是吧test这文件的内容拿到当前执行py里面来执行)

我们执行a.py文件的时候,只会找当前目录的模块文件,虽然我们导入module文件中的test文件,test文件有import calc模块(import calc.py文件);但是最终还是报错,这是因为我执行的py文件的是a.py ;而test中的import calc只是一个引入文件,并不是执行文件,解释器找到这层的时候,只会按照执行文件这层目录去导入文件,所以解释器只认识a,py这层文件,这时就报错了.这就是上面总结的,反复强调 执行py文件的,执行文件的中的import 模块,解释器只会导入当前执行文件的路劲导入文件,不会去其他目录查找(除系统提供的目录外),

如何修改:

test.py文件中的import calc 修改为 from module import calc  修改完就正常了

module模块和包的更多相关文章

  1. module模块和包(十七)

    在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办法,把这些定义存放在文 ...

  2. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  3. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

  4. python模块及包的导入

    一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...

  5. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  6. Python中的模块与包

    标准库的安装路径 在import模块的时候,python是通过系统路径找到这些模块的,我们可以将这些路径打印出来: >>> pprint.pprint(sys.path) ['', ...

  7. Python类、模块、包的区别

    类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 模块 模块,在Python可理解为对应于一个文件.在创建了一个脚本文件后,定义了某些函数和变量.你在其他需要这些功能 ...

  8. python学习笔记13(模块、包)

    在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...

  9. python模块与包加载机制

    模块的搜索路径: When a module named spam is imported, the interpreter searches for a file named spam.py in ...

随机推荐

  1. Shader-另类实现

    利用Panel的Clipping 裁剪模式(其实该实现方式也是shader)主要是修改 centX 与 Size就ok的 . panel.baseClipRegion=new Vector4(cenX ...

  2. dfs常见的配置文件中的value与description(重要)

    不多说,直接上干货! name value description dfs.namenode.logging.level info The logging level for dfs namenode ...

  3. Redis集群事物提交异常Multi-key operations must involve a single slot

    redis做完集群后不同键在同一事物中提交,因为key的hash计算结果不同不能分配到同一个分片上,因此出现此异常. 解决方案:在本次事物的key内添加"{tag}",这时redi ...

  4. linux 查看进程启动路径

    在linux下查看进程大家都会想到用 ps -ef|grep XXX 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid对应的路径 例如:ps -ef|grep ...

  5. shell 发送所有内容到会话

    在shell当中 工具 发送键输入到所有会话 会有新的发现

  6. arp协议分析&python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  7. Spring之Ioc原理

    ioc 控制反转 使用的 单例模式 和 工厂模式 单例模式保证创建对象的唯一性 工厂模式实现解耦合的作用 通过dm4j类似的技术读取xml文件中bean标签的属性值,id和class 利用反射技术和c ...

  8. Unreal Engine 4 Smear Frame效果的实现与分析

    转自:http://www.52vr.com/article-868-1.html 这篇文章介绍了类似守望先锋中的帧转移模糊(Smear Frame)效果.   该效果由Jan Kaluza实现,本博 ...

  9. HBase常用操作命令

    HBase常用操作命令 1.进入HBase脚本客户端 #hbase shell #进入HBase脚本客户端 > whoami    #查看当前登录用户 > status           ...

  10. Windows 2016 无域故障转移群集部署方法 超详细图文教程 (二)

    上一章我们配置了一台设备,接着根据那个配置,配置其它设备.这里我配置了三台设备: 创建故障转移群集,并添加设备. 之前的操作都是每台服务器都要做的,而这个操作,只需要任选一台去做即可,我这里选d1 1 ...