######################模块
导入模块做的事
1.产生新的名称空间
2.以新建的名称空间为全局名称空间,执行文件的代码
3.拿到一个模块名spam,指向spam.py产生的名称空间

import 文件名 导入 在同级目录下
import x
x.foo() 之后 调用该模块下的 函数 或者变量 要加 模块名(文件名)

from ... import ...
优点:方便,不用加前缀
缺点:容易跟当前文件的名称空间冲突

可以导入文件下的一个函数

from sparm import foo
foo()  -->之后 可以直接 执行


from sparm import *    -->导入 所有 功能  可以 直接调用
foo()
foo2()
glo()
foo()
print (A) 备注:sparm 中 开头定义了变量 A=100 又定义了函数 foo 和 foo2 都是 打印 变量 A,
          函数glo()定义了 修改全局变量 A =111 之后 再调用 foo 打印的 A 是 111 而 直接 print (A) 打印的是 100没变

######################包
#当 在写一个比较大的项目时候  会引入 包的作用
# 在别人 引用的你的 代码的时候 或者你引用别人的代码的时候 import 或者 from * import *
#在引入的一个是 文件夹的时候 其实 是在导入 该文件夹下的 __init__.py 文件
#再通过这个文件 导入 你这个文件夹 下的 其他 文件 或目录

目录结构 是这样的
test.py
glance
  __init__.py (glance)
  api
    __init__.py (api)
    testapi.py

test.py==>

import glance

glance.B()

glance目录-->__init__.py (glance)==>
from .api.api_test1 import *
from .api.mode import * api目录-->__init__.py (api)==>
什么都没定义 testapi.py==>
def B():
print ('这个是api 下的 test1的B')
----------------------这样 在和glance同级目录的文件就 可以调用 最里面 api 目录下文件的功能了 
最里面的文件 可以定义被调用的功能,放入一个列表,如果不在这个列表 就不被调用
__all__=[]  来定义;这里面存放 被调用的

===============>然后还可以 定义 如果被调用,执行什么,   自己测试  执行什么
if __name__ == '__main__':-->自己测试的结果
  print ('自己测试')
else:            -->调用的结果
  from .api.testapi import *
  print ('被其他地方调用')
===========================================以上 的执行 形式 是 glance.功能(),但是 这样有可能会 遇见功能名重复;所以 参考 下面:

###################执行形式 是  glance.文件名.功能()

目录结构 是这样的 
test.py
glance
  __init__.py (glance)
  api
    __init__.py (api)
    testapi.py test.py==>>
import glance

glance.mode.A()
glance.mode.C()
glance.api_test1.B()
glance.api_test1.D()
glance目录-->__init__.py (glance)==>
  from .api import *   #--->api_test1    mode
api目录-->__init__.py (api)==>
  
if __name__ =='__main__':  
print ('这个是api') from .api_test1 import *   --># B D 功能
from .mode import *     -->#AC

testapi.py==>
  
def B():
print ('这个是api 下的 test1的B') def D():
print ('不该显示这个D') mode.py==>
def A():
print ('model') def C():
print ('不该显示这个C')

day5_ 导入模块和包的更多相关文章

  1. Python 3基础教程20-Python中导入模块和包

    本文介绍Python中导入模块和包 #目录: # 导入模块和包--- # | # 上级包.上级模块.导入模块和包的init模块----- # | # 同级包.同级模块.上级包的init模块.test模 ...

  2. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  3. Python进阶-XIII 导入模块和包 异常处理

    一.模块的导入 1).import # 测试一:money与my_module.money不冲突 import my_module money=10 print(my_module.money) '' ...

  4. python 导入模块、包

    1. 模块:一个有逻辑的python文件,包含变量.函数.类等.2. 包:一个包含__init__.py的文件夹,存放多个模块 import 本质是路径搜索,查找sys.path下有无你导入的 pac ...

  5. python导入模块和包的使用

    做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...

  6. python中模块,包,库的概念

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  7. python中模块,包,库

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  8. python中动态导入模块

    当导入的模块不存在时,就会报ImportError错误,为了避免这种错误可以备选其他的模块或者希望优先使用某个模块或包,可以使用try...except...导入模块或包的方式. 例如: Python ...

  9. 转载 Python导入模块的几种姿势

    作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...

随机推荐

  1. Python标准模块--importlib

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python提供了importlib包作为标准库的一 ...

  2. 使用python发送QQ邮件

    这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”.使用的 MIMEText ...

  3. NSUserDefaults的使用,保存登录状态和设置的轻量本地化存储

    NSDictionary* defaults = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; if([[NSUs ...

  4. MOSFET使用与H桥驱动问题

    0.小叙闲言 最开始学习三极管的时候,很注重它的工作原理,后来到了实际应用,就直接把三极管或MOSFET直接当作一个开关器件使用.直到前这几天,接触到MOSFET组成的H桥驱动电路时,发现它纯当作一个 ...

  5. 排序算法合集 python

    直接选择.插入排序 直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的 ...

  6. php生成二维码的几种方式整理及使用实例

    hp生成二维码的方式:1.google开放api:2.php类库PHP QR Code:3.libqrencode:4.QRcode Perl CGI & PHP scripts感兴趣的朋友可 ...

  7. 使用 PHPStorm + Xdebug 实现断点调试(二)

    一.配置 Xdebug 配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考<PHP 安装 Xdebug扩展>: [xdebug] xdebug.re ...

  8. 【外文翻译】使用Timer类去调度任务 ——java

    使用Timer类去调度任务 --java 原文地址:https://dzone.com/articles/using-timer-class-to-schedule-tasks 原文作者:Jay Sr ...

  9. .Net Core Session使用

    Sessiong 添加程序集 Microsoft.AspNetCore.Session 在Startup.cs 的 ConfigureServices中添加Session中间件设置 // sessio ...

  10. 55 Jump Game i && 45 Jump Game ii

    Jump Game Problem statement: Given an array of non-negative integers, you are initially positioned a ...