模块导入
2019-07-24 09:15:23来源:博客园 阅读 ()
模块导入使用import语句,当解释器执行到import语句时, 如果在搜索路径中找到了指定的模块, 就会加载它
该过程遵循LEGB作用域原则, 如果在一个模块的顶层导入, 那么它的作用域就是全局的,如果在函数中导入, 那么它的作用域是局部的
如果模块是被第一次导入, 它将被加载并执行
当导入多个模块时,可使用如下格式:
1) import 模块1,模块2,模块3,...
2) import 模块1
import 模块2
import 模块3
...
以上两种格式在性能上和生成 Python 字节代码时没有什么不同,因此一般情况下, 使用多行导入,因为可读性高
以datetime为例,datetime是一个文件datetime.py,里面定义了一个叫datetime的类,这个类有一个方法叫做now
import 模块
引入模块datetime,也就是文件datetime.py
当使用该模块里的datetime类时,需这样写代码:datetime.datetime
当使用该模块里的datetime类的now方法时,需这样写代码:datetime.datetime.now()
注意:当import多个层级时,如import xx.xx.xx,最后的一个xx只能是package或者module,但绝对不能是函数或者类的名字
如:import datatime.datatime 或者 import datatime.datatime.now是不可以的
import as
有时导入的模块或是模块属性名称已在程序中使用了, 或不想使用导入的名字
可使用import as替换成自己想要的名字,通常把模块赋值给一个变量
如:import datetime as dt
from import
from import用于引入模块中的类,函数,变量
from datetime import dateti me 表示引入模块datetime也就是文件datetime.py中的datetime类
当使用该模块里的datetime类时,需这样写代码:datetime
当使用该模块里的datetime类的now()方法时,需这样写代码:datetime.now()
datetime.datetime.now()会报错,因此通过from import方式导入模块内容时,如果当前代码中已有datatime属性,则属性就会被覆盖
而通过import方式就不会,因为import方式是需要"模块名.属性"来引用的模块内容的,因此不会产生冲突
from 模块 import *
引入模块中的所有的公开成员,比如有些成员名带"_"或"__"的,它们是不会被引用的
何时使用from import
1) 目标模块中的属性非常多, 反复键入模块名很不方便 ,
如 Tkinter (Python/Tk) 和 NumPy (Numeric Python) 模块 , 可能还有 socket 模块
2) 交互解释器下, 因为这样可以减少输入次数
import和from import区别
假设有模块A和模块B,在模块B中使用import和from import引入模块A
使用import
import A A.funcA() #使用的funcA()依然是A模块的,虽然在模块B的代码中,但其命名空间依然是在模块A,如果对模块A的funcA()进行修改,是会影响到其在模块B的使用的
使用from import
from A import funcA funcA() #funcA()已经是A模块的funcA()了,该函数存在于模块B的全局命名空间,如果对模块A的funcA()进行修改,是不会影响到其在模块B的使用的
因此,减少使用from xxx import XXX,特别是from xxx import * 这样的使用模式。后者将会污染全局命名空间
原文链接:https://www.cnblogs.com/shiliye/p/11138323.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 导入包 2019-08-13
- python3 enum模块的应用 2019-08-13
- 利用python自动生成verilog模块例化模板 2019-08-13
- Python random模块(以后用到一个再更新一个) 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash