• 关于import和from xx import xx


    一、关于导入模块

    1在导入模块的一瞬间,解释其会先通过sys.modules来判断该模块是否已经导入了,True 则不再重复导入,False则会做三件事

      1为导入的模块创立心的名称空间

      2在心创建的名称空间中运行该代码中的代码

      3创建模块的名字,并使用该名称空间作为该模块的当前模块中引用的名字

    2关于 " __name__"=="__main__":

      当我们把一个模块作为程序运行的入口时,此时该模块的__name__是"__main__;如果我们把模块导入时,此时模块内部的__name__事就该模块自身的名字.

        注意:在py中直接输入main可以出现神奇的效果!

     3我们还可以对导入的模块进行重新命名: 

     4 正确的导入模块的顺序:

               1. 所有的模块导入都要写在最上面. 这是最基本的

               2. 先引入内置模块           

       3. 再引入扩展模块           

       4. 最后引入你自己定义的模块

     二、关于from xx import xx:

    跟import的区别就是可以部分导入,应用在模块内容过多的时候,我们可以选择性的导入要使用的内容:

    关于from的注意点:

      1自己模块的变量名不要跟导入模块的变量名想冲突,不然系统会覆盖掉导入的变量名

      2 自己创建的py文件名字也不要和系统内置的模块重名,同理

           3 from xxx import xxx这种形式, import后⾯不可以出现"点" 也就是说from a.b import c是ok的. 但是 from a import b.c 是错误的

     三、一些补充

     有种特殊的写法:from xx import *    在被导入的这个模块中如果没有写出__all__则默认所有内容都导入;

                                否则,则导入__all__列表中列出来的所有名字.

     四、包

     什么是包:  包的本质是文件夹,py里创建的每个文件夹都可以被称之为包,创建包不是为了运行,而是被导入使用,其作用就是将模块文件组织起来,一次来提高程序的结构性和可维护性.py2规定包里面必须存在__init__.py文件,py3沿用了规定,但会在创建文件夹时,自动帮你创建__init__文件

     如何创建包:  只要是一个文件夹,有__init__.py 就可以.

    1 关于__init__.py文件

    不论使用哪种方式导入一个包,只要是第一次导入包包的任何其他部分,都会先执行__init__py文件,这个文件可以是空,也可以存放一些初始化的代码

    注意点:可以在此文件中把包中所有模块都调用进去,但要注意,路径要写绝对路径,否则其他外部模块调用包的时候会报错,写入之后,运行文件,只需调入包名字就可以拥有包中的所有模块了(不常用,因为有时只是想导入包里面的部分模块,这样写会占很大内存.)

    包的注意事项:
    1. 关于包相关的导入语句也分为import和from xxx import xxx两种, 但⽆论使⽤哪种,
    无论在什么位置, 在导入时都必须遵循⼀个原则: 凡是在导入时d带点的. 点左边都必须是⼀
    个包. 否则报错. 可以带⼀连串的点. 比如a.b.c

    2.如果用from 绝对路径导入包,需要注意你的根目录下能否找到目标包,如果找不到,需要一层层的写

    五、包中的绝对导入和相对导入(用于启动的文件一定要写在包的外部)

    1绝对导入:是以根目录作为起始

    2相对导入:用 .或者 ..作为起始  (此方法不是给自己模块用的,是给用于启动的文件用的)

     注意点1: 此方法不是给自己模块用的,是给用于启动的文件用的,原因是py中不允许你运行的程序导包的时候超过当前包的范围(相对导入),如果使用绝对导入,则没这个问题; 

     注意点2:导入包的过程中出错,先看print(sys.path.__str__())或者输入指令:print(sys.path)(sys是关于pycharm操作系统的模块,path是路径,合起来,意为查看路径) ,确认下是否真的能获取到包的信息

     注意点3:  ./是在当前目录;../是返回上级目录下 #可以在cmd窗口进行验证

  • 相关阅读:
    EF4 中Selftrack entity 错误用于单web开发中要注意的地方
    C#验证文件类型
    简单实际的方式分隔Admin 区域
    SQLite 资源汇总
    C# Enum 类型的本地化
    Associations in EF Code First CTP5: Part 1 – Complex Types
    asp.net网站管理工具 的 地址(Web Site Administration Tool )
    wordpress 文章缩略图功能
    Sql Server 2008 Fulltext search Error: Word breaking timed out for the fulltext query string.
    用javascript创建第一个windows8 metro应用
  • 原文地址:https://www.cnblogs.com/lgw1171435560/p/10227111.html
Copyright © 2020-2023  润新知