美文网首页
34.2-import和from语句使用

34.2-import和from语句使用

作者: BeautifulSoulpy | 来源:发表于2020-01-07 07:29 被阅读0次

你忙于交际,频于应付,鸡同鸭讲的尴尬无处不在。你为了别人的欢笑而奔波,又为了别人的肯定而牺牲自我,你的人生仿佛都不是你的。其实,你根本不是在社交,而是无谓地蹉跎光阴!

1. 模块化

一般来说,编程语言中,库、包、模块是同一种概念,是代码组织方式。
Python中只有一种模块对象类型,但是为了模块化组织模块的便利,提供了"包"的概念。
模块module,指的是Python的源代码文件。
包package,指的是模块组织在一起的和包名同名的目录及其相关文件;

Python中模块分为以下几种:
(1)、系统内置标准模块:例如:sys、time、json模块等等;
(2)、自定义模块:自定义模块是自己写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。
注意:自定义模块的命名一定不能和系统内置的模块重名,否则将不能再导入系统的内置模块。
例如:自定义了一个sys.py模块后,再想使用系统的sys模块是不能使用的;
(3)、第三方的开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

2. 导入语句

语句 含义
import 模块1[,模块2,...] 完全导入
import ... as ... 模块别名(加入到本地名词空间)
from ... import ... 可以导入模块、变量、类

import语句后 只接受模块;其他都不允许;, 加载后,加入到名词空间;

import语句
1、找到指定的模块,加载和初始化它,生成模块对象,找不到,抛出ImportError;
2、在import所在的作用域的局部空间中,增加名称和上一步创建的对象关联
单独运行下面例子,体

from ... import ... from 可以导入模块、变量、类;

from os import path  # module
from os.path import normcase # 函数
from pathlib import Path  # 类
from pathlib import supports symlinks  as ss  # 变量

总结
导入顶级模块,其名称会加入到本地名词空间中,并绑定到其模块对象。
导入非顶级模块,只将其顶级模块名称加入到本地名词空间中。导入的模块必须使用完全限定名称来访问。
如果使用了as,as后的名称直接绑定到导入的模块对象,并将该名称加入到本地名词空间中。

from语句

from pathlib import Path, PosixPath # 在当前名词空间导入该模块指定的成员
print(dir()) # [..., 'Path', 'PosixPath']

from pathlib import * # 在当前名词空间导入该模块所有公共成员(非下划线开头成员)或指定成员
print(dir()) # [..., 'Path', 'PosixPath', 'PurePath', 'PurePosixPath', 'PureWindowsPath','WindowsPath']

from functools import wraps as wr, partial # 别名
print(dir()) # [..., 'wr', 'partial']
from os.path import exists
import os

print(os.path.exists)
print(exists)
print(os.path.__dict__['exists'])
print(getattr(os.path, 'exists'))
# 上面4种方式获得同一个对象
#--------------------------------------------------------------------
<function exists at 0x00000248A8D456A8>
<function exists at 0x00000248A8D456A8>
<function exists at 0x00000248A8D456A8>
<function exists at 0x00000248A8D456A8>

总结

找到from子句中指定的模块,加载并初始化它(注意不是导入)
对于import子句后的名称:

  1. 先查from子句导入的模块是否具有该名称的属性
  2. 如果不是,则尝试导入该名称的子模块
  3. 还没有找到,则抛出ImportError异常
  4. 这个名称保存到本地名词空间中,如果有as子句,则使用as子句后的名称

相关文章

网友评论

      本文标题:34.2-import和from语句使用

      本文链接:https://www.haomeiwen.com/subject/zmynoctx.html