zoukankan      html  css  js  c++  java
  • python--模块与包

    模块 

    什么是模块(一个PY文件)
      自己写的模块就是py文件  import的同时就是执行这个模块的里面的代码
      里面用def写了函数的话  模块.函数名  就是执行了这个函数
      同一个模块不会被重复导入
      导入模块的顺序:内置、需要安装的扩展模块、自己写的模块
      导入模块的规则:模块有自己的命名空间
      import  模块名  as  要改的名
      from 模块名 import方法名 as  要改的方法名,方法名  as 要改的方法名
      可以多个导入
      模块与模块之间也可以相互用,比如自己的模块里面导入了math模块里面的pi
      那么引用自己的模块的时候,也可以引用math模块中的pi
      __all__=[] 如果有这个,只有中括号里面的名字的方法才能被
      from 模块名 import*调用   *和__all__相通的
      sys.modules 当前文件引用的所有模块
      '' in sys.modules  判断是字符中的模块是否在当前引用的模块中
      import importlib   reload  可以实时在程序运行时修改模块内容
      pyc文件是一个编译文件,在import模块的时候自动生成,导入模块的时候会快 
      import sys
      print(sys.path)  所有导模块的顺序,如果内容少东西影响导模块
      第三方模块放在  site-packages中
      模块中 print(__name__)是__main__如果是别的导入这个模块的话,输出的是模块的名字
      所以可以用这一点做判断,用模块做脚本的时候,可以用这个值为__main__做判断
      如果模块做脚本的话都要加上  if __name__==‘__main__'这句话
      dir(内置函数)查看某一个模块的名字或者内置函数的名字

    包 

    里面有__init__的文件夹就是包
      要导入包里面的模块
      from glance.api import policy
      policy.get()
      例如↑
      from  文件目录  impor 前面文件目录下的模块
      方法调用
      也可以多个导入
      如果用了  .  这种相对路径的导入 .是当前目录  ..是上层目录
      对于别人写好的包,直接用就行
      如果自己写包:
        如果模块与模块之间没什么联系,就不用操心绝对路径相对路径
     如果包的模块之间存在引用关系:
        绝对路径的导入:导入的路径要随着包与文件关系的变化而发生位置改变
                        优势在包内部和包外部都可以执行
        相对路径的导入:一次写好的模块的导入关系,不需要关心模块和文件之间的关系和位置变化
                        在外部没问题,在内部有问题
            只能在包外面执行
      __init__肯定是先要执行的   直接 from glance import api  这样的话导入这个文件夹就先执行__init__

  • 相关阅读:
    【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
    【RL-TCPnet网络教程】第32章 RL-TCPnet之Telnet服务器
    【原创开源应用第5期】基于RL-USB+RL-FlashFS的外挂U盘解决方案
    【RL-TCPnet网络教程】第31章 Telnet远程登录基础知识
    【RL-TCPnet网络教程】第30章 RL-TCPnet之SNTP网络时间获取
    【RL-TCPnet网络教程】第29章 NTP网络时间协议基础知识
    【RL-TCPnet网络教程】第28章 RL-TCPnet之DNS应用
    【RL-TCPnet网络教程】第27章 DNS域名系统基础知识
    【RL-TCPnet网络教程】第26章 RL-TCPnet之DHCP应用
    emWin录音机,含uCOS-III和FreeRTOS两个版本
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7570088.html
Copyright © 2011-2022 走看看