zoukankan      html  css  js  c++  java
  • Python中的import

       模块(module):用来从逻辑(实现一个功能)上组织Python代码(变量、函数、类),本质就是*.py文件。文件是物理上组织方式"module_name.py",模块是逻辑上组织方式"module_name"。

       包(package):定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(必须带有一个__init__.py文件)。

       package:目录,包下面必须有一个__init__.py文件,否则只是一个单纯的目录,不算是一个包
         module:py文件

    导入方式有以下几种:
    #①采用from...import方式
      from 包绝对路径 from 模块py文件

      from package.subpackage1 import foo1

      from 模块 import 变量

      from 包 import 子包


    #②采用import方式

      import package.subpackage1

      import 模块

      导入函数、变量、类只能使用from ... import ... 方式。

      如果导入的是一个包而不是一个模块,则python引擎会去执行这个包的目录下的__init__.py,此时这个文件中可能是一些导入的语句,例如:

      import Primitive, Graph2d, Graph3d,标红的三个都为模块的名字。

      如果是模糊导入,例如:from Root.Pack1 import *,Pack1为一个包,则引擎会读取Pack1下的__init__.py文件,根据该文件里面的__all__变量导入相应的模块。

      第一次导入一个模块时,模块中的程序会被执行一次,下一次再导入则不会再执行了。

      模块在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name 理解为名字限定符。模块名就是文件名去掉.py后缀。

      from module import names  可以直接从模块中导入名字到符号表,但模块名字不会被导入。
      from module import *     可以把模块中的所有名字全部导入,除了那些以下划线开头的名字符号。不建议使用,不清楚导入了什么符号,有可能覆盖自己定义的东西

      pyc文件是py文件编译成的字节码文件,在导入一个模块的时候会自动在py文件的目录下生成pyc文件,pyc主要为了可重用模块的效率,因此,只有使用import或者from ... import ... 导入一个模块的时候才会生成pyc。导入的模块被认为是可重用的模块,而直接执行一个py文件时是不会生成pyc文件的。

  • 相关阅读:
    SQl 语句(常见) 新建,删除,修改表结构
    3步把您的java程序转换为webservice
    JSP标签中不要省略引号
    图文并茂——使用xfire编写webservice,并通过C#调用
    Java取随机数
    JAVA获取文件本身所在的磁盘位置
    XFire 入门
    mysql复制表和表结构
    遍历HashMap及获取所有的Key值
    MyEclipse+struts+Hibernate配置开发
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/9343729.html
Copyright © 2011-2022 走看看