2019/12/02 02-import和from语句使用

在这里插入图片描述
把大量的代码切分成模块,在一些编程语言,称为模块,包(java),库(c语言),是代码组织方式
python只有一种模块对象类型,但是为了模块化组织模块的便利,提供了“包”的概念。
模块module,指的是python的源代码文件。(包是把这些模块组织在一起,和包名一致的目录及目录下的.py文件)
包package,指的是模块组织在一起的和包名同名的目录及其相关文件
在这里插入图片描述在这里插入图片描述
如何知道你导入什么,导入的东西实际上也是标识符,通过名称找到这个模块名在这里插入图片描述在这里插入图片描述
是一个模块的实例,type之后发现是class module,背后是一个模块对象,跟函数名,类名类似,通过os这样一个名称跟模块建立关联,在当前环境中,与模块对象建立关联在这里插入图片描述
就可以直接调用这个方法在这里插入图片描述
查看os.path是什么,os.path是模块,一般吧模块组织起来称为包,但是类型还是module
os.path 加载的不一样
在这里插入图片描述
这个称为名词空间,os就算名词,目前运行环境也称全局环境在这里插入图片描述
os.path里面有这个在这里插入图片描述
明确告诉你导入的不合适模块类型,导入的其实是一个函数在这里插入图片描述
现在换了别名就是ospath,这一回不回把os放进来(之前import os 和import,os.path导入的都是os模块)
现在就是把ospath做为一个名词导入了,这个标识符对应os.path模块对象
在这里插入图片描述
pl对应的就是这个模块对象,需要先把这个模块对象创建出来然后拿标识符对应起来在这里插入图片描述
path是类不是模块所以不允许在这里插入图片描述
impot后面只能写,模块类型,(包也是模块类型),只能出现模块,其他都不允许在这里插入图片描述
1、找到指定的模块,加载和初始化它, 生成模块对象。找不到,抛出ImportError异常
2、在import所在的作用域的局部命名空间中,增加名称和上一步创建的对象关联
在这里插入图片描述
导入非顶级模块,指匠情挑顶级模块名称加入到本地名词空间中。导入的模块必须使用完全限定名称来访问
如果使用了as,as后的名称直接绑定到导入的模块对象,并将该名加入到本地名词空间中。

在这里插入图片描述

from

在这里插入图片描述
用from。从什么导入什么,现在导入的是名词是path,os没进来在这里插入图片描述
os没有,path没有在这里插入图片描述
导入函数和类都可以,
试试方法,方法是特殊函数,现在提示模块没找到
在这里插入图片描述
from后面必须是模块,import,函数,模块,类
在这里插入图片描述在这里插入图片描述
甚至可以导入pathlib的变量
在这里插入图片描述
用from语句最后可以导入类,函数,变量,模块,但是要求from后面只能是模块
在这里插入图片描述
这里就是指的是把什么样的名词加入到名词空间里去在这里插入图片描述
用from语句特点是,from紧跟的模块不会填入到当前的名词空间中,而impot是写什么加进来什么
在这里插入图片描述
from后面的仅仅是加载不会加入到名词空间,import的后面的东西不仅要加载,还要把加载的东西加入到名词空间里供你使用在这里插入图片描述
这个标识符类似局部变量,函数,类,各有各的作用域,但是名词空间不能完全跟作用域划等号,但是可以先这么理解在这里插入图片描述
导入的叫标识符也可以叫名词在这里插入图片描述
还可以这么写,这样就证明跟作用域相关
在这里插入图片描述在这里插入图片描述在这里插入图片描述
会把后面的作为标识符加到本地的名词空间当中在这里插入图片描述
保护成员_,私有成员__,公共成员在这里插入图片描述
这些都是当前一些模块的属性在这里插入图片描述
这些是导入进来的在这里插入图片描述
这些都看不到,去哪里了
在这里插入图片描述
星号比较特殊,这两个一样
在这里插入图片描述在这里插入图片描述在这里插入图片描述
这三种方式是同一种对象,地址一样在这里插入图片描述在这里插入图片描述
找到from子句中指定的模块,加载并初始化它(不是导入),导入是导入到名词空间里
对于import子句后的名称,只能导入顶级模块否则只能用别名
先查找from子句后面是否是模块,是模块就加载模块。有没有你要导入的属性
如果os.path,path是属性就直接加载属性,下面有个子模块叫path,优先用属性,属性找不到再找有没有这个模块(优先找属性,后找,模块)
如果属性没找到,模块没找到,就抛出importerror、
这个名称保存到本地名词空间中,如果有as子句,则使用as子句后的名称

在这里导入要弄明白,使用dir,或者locals内建函数,这两个在这里是等价的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值