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. C/C++基础--面向对象编程OOP

    基类通常定义一个虚析构函数,通过基类指针析构派生类对象时不会出现未定义的行为. 如果一个类定义析构函数,编译器不会为这个类合成移动操作. 虚函数覆盖,可以显式地加override,可以让程序员的意图更 ...

  2. P1706 全排列问题

    题解:(其实我认为它就是个循环) #include<iostream> #include<cstdio> #include<iomanip> using names ...

  3. [UE4]模拟网络延迟和丢包

    进入游戏界面,按下键盘的“~”键,打开控制台界面,输入net会自动列出跟网络相关的命令 1.Net pktLag=,模拟延迟,单位是毫秒 2.Net PktLagVariance=300,在模拟延迟的 ...

  4. Sublime下MarkDown插件实现编辑和实时预览并转换成HTML格式

    最近在使用markdown做笔记,编辑器Sublime Text3用起来很轻巧,现在让他支持markdown的语法并且可以实时预览. 安装准备——安装Package Control Package C ...

  5. 报错:Column count doesn't match value count at row 1

    mysql错误:Column count doesn't match value count at row 1 意思是存储的数据与数据库表的字段类型定义不相匹配. 解决办法:检查段类型是否正确, 是否 ...

  6. 13-001 ViewComponents IViewComponentActivator

    接口定义: /// <summary> /// Provides methods to activate an instantiated ViewComponent /// </su ...

  7. Hibernate c3p0的整合

    Hibernate整合c3p0 Hibernate中可以使用默认jdbc连接池,但是无论功能还是性能都不如c3p0 在pom添加jar包: <!-- hibernate-c3p0 --> ...

  8. 关于New,delete

    new delete 为表达式.这个过程不能重载,但是分解的步骤可以重载. String* ps = newe String("Hello") 分解为: String* ps; v ...

  9. (转)Intellij IDEA 快捷键整理

    [常规] Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关 ...

  10. jquery事件及插件

    jquery事件 方法 描述 bind() 向匹配元素附加一个或更多事件处理器 blur() 触发.或将函数绑定到指定元素的 blur 事件 change() 触发.或将函数绑定到指定元素的 chan ...