马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小牛有话说:
各位鱼油,大家好。我是小牛,再回首,已经三年时间过去了。小牛也从一名学生成为了一名人民教师,希望能在暑假里把前面挖的坑给填起来一部分,也衷心地希望各位鱼油能在阅读帖子过程中有所收获。。。。。。
本期主要内容导读:
这一期我们归纳一下鱼神第五十一讲“模块:__name__='__main__'、搜索路径和包”。顾名思义,这一期里面鱼神主要讲解了模块中__name__属性的妙用,模块的搜索路径和模块打包的相关知识。
1.模块中__name__的含义和作用
__name__属于系统内置的变量,对于一个模块中的__name__值:如果该模块是被导入,则__name__的值为模块名字;如果模块是被直接执行,__name__的值为’main’,举例说明:def c2f(cel):
fah = cel*1.8 + 32
return fah
def f2c(fah):
cel = (fah-32)/1.8
return cel
if __name__ == '__main__': #判定该模块程序是自己运行还是被调用
print("__name__的值为%s"%(__name__))
print("验证,0摄氏度 = %.2f华氏度"%(c2f(0)))
print("验证,20华氏度 = %.2f摄氏度"%(f2c(0)))
else:
print("__name__的值为模块名%s"%(__name__))
由于该模块是直接运行,所以__name__ 的值为"__name__",运行结果为:
__name__的值为__main__
验证,0摄氏度 = 32.00华氏度
验证,20华氏度 = -17.78摄氏度
当通过calc.py进行调用,相关代码如下:from Temperature_Conversion import *
print("输入的摄氏温度为100,转换后的华氏温度为%.2f"%(c2f(100)))
print("输入的华式温度为212,转换后的摄氏温度为%.2f"%(f2c(212)))
由于是通过别的模块调用Temperature_Conversion模块,所以Temperature_Conversion模块内的__name__ 的值为模块名,运行结果为:
__name__的值为模块名Temperature_Conversion
输入的摄氏温度为100,转换后的华氏温度为212.00
输入的华式温度为212,转换后的摄氏温度为100.00
在大型工程中,常常有if __name__ == "__main__":来表明整个工程开始运行的入口。
2.模块的搜索路径用法
当通过import语句调用需要的模块时,程序会按照默认的路径查找调用的模块名。那么Python程序中默认的查找路径是什么呢,在idle在输入一下代码获得默认路径:import sys
print(sys.path)
获得默认搜索路径如下:
'', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\idlelib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages'
默认路径与用户电脑配置有关,一般情况下,建议用户将需要调用的模块放入"site-packages"文件夹下,当然将调用模块直接放在主程序同一目录下也是最简单有效的方式。
另外,也可以不改变调用模块文件的位置,只需要通过在默认路径中加入调用模块所在的路径即可,举例说明:sys.path.append(r"D:\python_tests\case50") #首先将Temperature_Conversion.py模块的位置添加到默认的Python程序路径内
此时输入以下代码:import Temperature_Conversion
print("20摄氏度=%.2f华氏度"%Temperature_Conversion.c2f(20))
则会显示以下结果:
20摄氏度=68.00华氏度
表明此时可以直接调用Temperature_Conversion模块。
3.模块的包用法
对于大型工程代码,可能会有成千上万个模块,此时如果一股脑放在一起或者像上面一样添加默认路径显然不现实,此时就需要我们将不同的模块分类放入不同的文件夹下,直接将每一个文件夹打包进行调用即可。
具体的打包过程需要三个步骤:(1)创建一个文件夹,文件夹名即打包名;(2)在创建的文件夹内创建__init__.py模块,表明所在文件夹是用来进行打包的,__init__.py模块内容可为空;(3)将调用模块放入该文件夹内;
(4)在主程序内通过 import 文件夹名.调用模块名 进行模块调用。实例说明如下:
新建一个文件夹Bao,并在Bao文件夹下创建__init__.py,接着将Temperature_Conversion.py放入该文件夹下;在calc.py程序中加入如下调用代码:import Bao.Temperature_Conversion
print("输入的摄氏温度为100,转换后的华氏温度为%.2f"%(Bao.Temperature_Conversion.c2f(100)))
print("输入的华式温度为212,转换后的摄氏温度为%.2f"%(Bao.Temperature_Conversion.f2c(212)))
执行后显示结果如下:__name__的值为模块名Bao.Temperature_Conversion
输入的摄氏温度为100,转换后的华氏温度为212.00
输入的华式温度为212,转换后的摄氏温度为100.00
根据第50讲内容,这里在calc.py程序里面推荐如下代码进行调用:import Bao.Temperature_Conversion as tc
print("输入的摄氏温度为100,转换后的华氏温度为%.2f"%(tc.c2f(100)))
print("输入的华式温度为212,转换后的摄氏温度为%.2f"%(tc.f2c(212)))
|