zoukankan      html  css  js  c++  java
  • Python开发基础-Day16import模块导入和包的调用

    模块概念

    在Python中,一个.py文件就称之为一个模块(Module)。使用模块组织代码,最大的好处是大大提高了代码的可维护性

    模块一共三种:python标准库、第三方模块、应用程序自定义模块。

    相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

    模块导入

    import语句

    1 import module1[, module2[,... moduleN]

    使用import语句时候,Python解释器通过sys.path的路径搜索。

    每次import的时候,都会相应的开辟内存空间存放被import的内容,但是与调用import的文件开辟的内存空间相互独立。例如import foo.py在新建的名称空间里执行源文件(foo.py)代码时,所有对全局名称空间的引用或修改,都是以foo.py为准。

    注意:

    一个模块可以在当前位置import多次,但是只有第一次导入会执行内容,其他的都为引用内存

    更改调用名称:

    1 import logging as log
    2 log.critical("www")

    from...import语句

    1 from modname import name1[, name2[, ... nameN]]

    这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的name1或name2单个引入到执行这个声明的模块的全局符号表。

    包的调用

    为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

    每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件。

    跨包调用(当前目录下有modulepack1包):

    1 from modulepack1[.modulepack2] import module

    如果当前目录下能够找到要调用的包,可以直接from包import模块,如果当前目录找不到要调用的包,需要向sys.path添加包的所在绝对路径。

    import一个包名,就等于执行了这个包下的__init__文件。

    示例:

    在nod1里import  hello是找不到的,需要手动添加包路径,如果找到那是因为pycharm给加了不必要的路径,以命令行执行为准。

    1 import sys,os
    2 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #__file__获取执行文件相对路径,整行为取上一级的上一级目录
    3 sys.path.append(BASE_DIR)  #添加路径
    4 import hello
    5 hello.hello1()

    模块调用测试

    1 if __name__=='__main__':  #__name__方法判断
    2     print('ok')

    在一个py模块直接执行print(__name__)会输出__main__,表示当前这个文件属于执行文件,如果从其他的py模块中导入一个py模块,执行被导入的py模块中的print(__name__)会输出被导入的模块的模块名称,那么if判断就不会成功,所以导入的时候不会执行判断内的代码。

    主要用在调试功能,即一个模块被调用的时候不执行内容,而自己调试模块的时候可以顺利的执行模块内容。

  • 相关阅读:
    每日一水 POJ8道水题
    编译和使用 MySQL C++ Connector
    j2ee model1模型完成分页逻辑的实现 详解!
    DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号
    指向结构体变量的指针
    EOSS V3.0 企业运营支撑系统(基于RBAC原理的权限管理)
    MybatisGen1.0 Mybatis JavaBean Mapper生成工具
    The table name must be enclosed in double quotation marks or sqare bracket while accessing EXCEL by
    资源-Android:Android
    软件-开发软件:Android Studio
  • 原文地址:https://www.cnblogs.com/zero527/p/7090416.html
Copyright © 2011-2022 走看看