容器 --- 数据的封装
函数 ---语句的封装
类 --- 方法和属性的封装
模块 --- 模块就是程序
导入模块
. 第一种: import + 模块名
. 第二种:from + 模块名 + import + 函数名(有多个函数就用英文逗号隔开)/ 也可用通配符*
. 第三种:import + 模块名 + as + 新名字 (建议使用第三种导入方法)
__name __ == ' __ main __' 语句的引用
当我们导入模块时 上面的语句就可能经常用到啦!在我们写模块时经常要经常测试模块代码,但如果测试代码写到模块里的,在其他.py文件打开模块时就会把测试代码段也显示出来,为了避免这种情况,就需要在所写的模块里加上 if __name __ == ' __ main __',废话不说上代码:
def c2f(cel):
fah = cel*1.8 + 32
return fah
def f2c(fah):
cel = (fah-32)/1.8
return cel
def test():
print('测试,0摄氏度 =%.2f华氏度'%c2f(0))
print('测试,0摄氏度 =%.2f摄氏度'%f2c(0))
if __name__=='__main__':
test()
输出结果为:
测试,0摄氏度 =32.00华氏度
测试,0华氏度 =-17.78摄氏度
我们在模块的文件夹里再写一个.py文件,然后代码如下:
import temmperaton as tc
print('32摄氏度=%.2f'%tc.c2f(32))
print('99华视度=%.2f'%tc.f2c(99))
输出结果
32摄氏度=89.60
99华氏度=37.22
一个模块尽量有测试代码 但如果测试代码里没加这个语句会咋样呢
def c2f(cel):
fah = cel*1.8 + 32
return fah
def f2c(fah):
cel = (fah-32)/1.8
return cel
def test():
print('测试,0摄氏度 =%.2f华氏度'%c2f(0))
print('测试,0摄氏度 =%.2f摄氏度'%f2c(0))
test() #模块代码
import temmperaton as tc
print('32摄氏度=%.2f'%tc.c2f(32))
print('99华视度=%.2f'%tc.f2c(99))
输出结果为:
测试,0摄氏度 =32.00华氏度
测试,0摄氏度 =-17.78摄氏度
32摄氏度=89.60
99华视度=37.22
所以模块里测试代码一定要加if __ name __ == '__ main__',因为模块代码被当作模块导入时模块的__ name __ == 模块名,自然再被导入时不会把测试代码弄出来
所谓的模块就是我们平时写的任何代码,然后保存在每一个.py的文件,都是一个独立的模块(文件名 = 模块名)
搜索路径
对于这个概念的来讲,我们之前一直觉得只要把模块得文件写在跟你所写得脚本同一个目录(同一文件夹)那样导入就万事大吉了,但有时我们另外写了一个.py文件,那是我们想导入这个模块时该咋办呢,当然你还是可以把那个模块拉到你所写得文件得目录下,那另外一个办法就是把模块得文件夹地址添加到搜索路径下:
import sys
sys.path.append(r'D:\python\python36\新建文件夹') #添加模块路径
import M1.temmperaton as tc ## M1是模块包,包名自己想(文件夹)
print('32摄氏度=%.2f'%tc.c2f(32))
对于模块包(M1,自己命名)得概念很简单,只需要再包里(文件夹)添加一个空得__ init __.py的文件,然后把模块拉进去就行了,当然添加的模块路径还是写模块包的路径,不要具体到模块的路径要不然会出错。
还有个问题就是导入跟自己写的脚本文件不一个目录下的模块时,用到搜索路径后,模块名总是有红色波浪线,程序本身正常运行,搞不明白为啥,有大佬看到了指点一下,拜托
网友评论