前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模块的导入

模块的导入

作者头像
py3study
发布2020-01-21 15:01:37
9660
发布2020-01-21 15:01:37
举报
文章被收录于专栏:python3python3

一.模块导入的过程

(1).先从sys.modules里查看模块是否已经被导入 (2).如果没有被导入,就依据sys.path路径寻找模块 (3).找到了模块就导入 (4).创建这个模块的命名空间 (5).执行文件,把文件中的名字都放到命名空间里

代码语言:javascript
复制
import sys
print(sys.modules.keys())
print(sys.path)

二.模块导入的方法

所有的模块导入都应该尽量往上写 导入的顺序依次向下: 内置模块 扩展模块 自定义模块

1.import

(1).import 模块名

模块名.变量名——和本文件中的变量名完全不冲突

(2).import  模块名  as  重命名的模块名

提高代码的兼容性

示例一:

有两个sql模块mysql和oracle,根据用户的输入,选择不同的sql功能

代码语言:javascript
复制
#mysql.py
def sqlparse():
    print('from mysql sqlparse')
#oracle.py
def sqlparse():
    print('from oracle sqlparse')

#test.py
db_type=input('>>: ')
if db_type == 'mysql':
    import mysql as db
elif db_type == 'oracle':
    import oracle as db

db.sqlparse() 

View Code

示例二:

假设有两个模块xmlreader.py和csvreader.py,它们都定义了函数read_data(filename):用来从文件中读取一些数据,但采用不同的输入格式。可以编写代码来选择性地挑选读取模块,例如

代码语言:javascript
复制
if file_format == 'xml':
     import xmlreader as reader
elif file_format == 'csv':
     import csvreader as reader
data=reader.read_date(filename)

View Code

(3).import 模块1,模块2

2.from import

(1).from  模块名  import  变量名     

直接使用 变量名 就可以完成操作 如果本文件中有相同的变量名会发生冲突

(2).from  模块名  import  变量名  as  重命名变量名

(3).from  模块名  import  变量名1,变量名2

(4).from 模块名 import *

将模块中的所有变量名都放到内存中 如果本文件中有相同的变量名会发生冲突

from 模块名 import * 和 __all__ 是一对,没有这个变量,就会导入所有的变量名

如果有__all__ 只导入__all__ 列表中的名字

三、__name__

我们可以通过模块的全局变量__name__来查看模块名: 当做脚本运行: __name__ =='__main__'

当做模块导入: __name__== 模块名

作用:用来控制.py文件在不同的应用场景下执行不同的逻辑 if __name__ == '__main__':

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档