本篇内容介绍了“Python中怎么控制from xxx import *导入的成员”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们提供的服务有:做网站、网站设计、微信公众号开发、网站优化、网站认证、博州ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的博州网站制作公司
默认情况下,所有的成员都会被导入。但可以修改__all__变量控制哪些成员可以被导入。该变量是字符串列表(或元组),内部元素是可被导入的成员名。
示例请看下图:test1模块中有name、age、height三个成员,__all__变量保存了这三个成员名。test2模块用from test1 import *导入test1所有成员,此时test2模块可以正常使用test1的三个成员。
再看下图:test1模块中__all__变量保存了三个成员名,但注释了height这个成员(注意列表的书写方式,一个元素一行,用ctrl+/注释不能被导入的成员非常方便。如果所有内容写在一行时就不能注释内部元素,只能删除),test2模块用from test1 import *导入test1的所有成员,此时只能使用name和age这两个成员,height成员不能使用。
注意:使用import 模块时,__all__不起作用。请看下图示例,test2模块用import test1导入test1的所有成员后,即使test1的height成员在__all__变量中被注释了,仍然可以正常使用。
在大型项目中经常会遇到模块文件很多的情况,为了方便管理一般会按功能分别建立多个文件夹,在不同文件夹下各自有多个模块,各个模块之间还存在相互引用的情况。今天先梳理一种绝对导入的方法。
有一个项目,路径是D:\Python自学笔记\模块,在该项目下有多个模块和文件夹,其中aa文件夹下有b文件夹,b文件夹内有bb.py模块。
注意红圈的内容,实际上python解释器会在加载.py文件时自动生成sys.path列表信息,sys.path[0]是当前模块的完整路径,sys.path[1]是当前模块的项目路径。
现bb模块需要调用cc模块的成员num2,可以通过from aa.c.cc import *的方法,其中b模块已知项目路径是“D:\Python自学笔记\模块”,然后加上aa文件夹名再加上.c文件夹名再加.cc模块名,即可绝对导入cc.py模块中所有的成员。
在项目路径“D:\Python自学笔记\模块”下有test_import.py模块,可以通过绝对导入的方式导入bb模块(另外bb模块中已经绝对导入cc模块,所以相当于同时导入了bb和cc),还可以通过import导入同路径下的test1模块。
绝对路径导入方法简洁易懂,要参与大型项目必须得学会这项技能。深入学python的朋友们最好自行敲代码多多练习加以熟练掌握。
“Python中怎么控制from xxx import *导入的成员”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!