第十三章 模块[DDT书本学习 小甲鱼]【1】

13.1 模块就是程序 模块是更高级得封装,学过的封装有哪些?
------------------------------------------------------
容器:列表、元组、字符串、字典等,这是对数据的封装
函数:是对语句的封装
类: 是对方法和属性的封装,也就是对函数和数据的封装
------------------------------------------------------
概括:模块就是程序。就是平时写的任何代码,保存的每一个.py结尾的文件,
都是一个独立模块。
举例如下:
在Python的安装目录下创建一个叫hello.py的文件,代码如下:
def hi():
print("Hi everyone, I love you!")
保存此文件后,它就是一个独立的Python模块了(为让IDLE找得到它,需
要放Python安装目录下)然后,导入这个模块:
import hello
hi()
----------
报错!!!!
NameError:name'hi' is not defined
为何说我们没有定义它hi()函数?????????????

13.2 命名空间
你班有个小花同学,隔壁班也有个叫小花的同学,如何区分?指定班级【命名空间】。
Python中,每个模块都会维护一个独立的命名空间,我们应该将模块名加上,才能
正常使用它的函数:
hello.hi()
---------------
Hi everyone, I love you!
===========================================

13.3 导入模块
下面介绍一下几种导入模块的方法
1 import 模块名 在使用模块内部方法时候,必须前置模块名.
2 from 模块名 import 函数名 (多个函数名用逗号隔开) 不需要每次再写模块名
还可以用通配符*来导入模块中所有命名空间。但是一般不做建议,会陷入名字混乱。
3 import 模块名 as 新名字 这一种最为推崇,可以给命名空间一个新的名字
例如:import easygui as g

13.4 __name__="__main__"
模块的作用:
1.封装和组织Python代码。根据功能不同,将代码分割为不同的模块。
2.实现代码的重用。
阅读别人的代码,能使技术水平飞速提升,在阅读代码时,会发现:
if __name__=="__main__"这么一行语句,却不知道它的作用?举例测试:
在Python安装目录下新建zhuanhuan.py 里面的代码如下
def c2f(cel):
f=cel*1.8+32
return f
def f2c(f):
cel=(f-32)/1.8
return cel
def test():
print("测试,0摄氏度=%.2f华氏度"% c2f(0))
print("测试,0华氏度=%.2f摄氏度"% f2c(0))
test()
---------------------------------------------
测试,0摄氏度=32.00华氏度
测试,0华氏度=-17.78摄氏度
==============================================
运行没有问题,但是在新的.py文件进行引用后,如下:
import zhuanhuan as tc
print("32摄氏度=%0.2f华氏度"% tc.c2f(32))
print("99华氏度=%0.2f摄氏度"% tc.f2c(99))
===================我亲自测试,并未出现这四行??!!====================
测试,0摄氏度=32.00华氏度
测试,0华氏度=-17.78摄氏度
32摄氏度=89.60华氏度
99华氏度=37.22摄氏度
==========================================================
结论:
if __name__ == "__main__":
test()
以上代码的意思是,只有单独运行zhuanhuan.py时才会执行test()函数。

13.5 搜索路径
写好的模块放在哪里?读者会说:“不是应该放在和导入这个模块文件的源代码同一个
文件夹内吗?”没错,这是一种解决方案。但是有的读者可能不希望把所有代码放在一个
框里,而是通过文件夹方式更好的组织代码。可以做到么?没问题-------搜索路径。
import sys
print(sys.path)
-----------------
['C:\PycharmProjects\out\two', 'C:\PycharmProjects\out',
'C:\PycharmProjects\out\venv\Scripts\python37.zip',
'C:\Users\Daodantou\AppData\Local\Programs\Python\Python37\DLLs',
'C:\Users\Daodantou\AppData\Local\Programs\Python\Python37\lib',
'C:\Users\Daodantou\AppData\Local\Programs\Python\Python37',
'C:\PycharmProjects\out\venv', 'C:\PycharmProjects\out\venv\lib\site-packages',
'C:\PycharmProjects\out\venv\lib\site-packages\setuptools-39.1.0-py3.7.egg',
'C:\PycharmProjects\out\venv\lib\site-packages\pip-10.0.1-py3.7.egg',
'C:\Program Files\JetBrains\PyCharm 2018.3.4\helpers\pycharm_matplotlib_backend']
--------------------------------
import sys
import zhuanhuan as g
sys.path.append(r"C:UsersDaodantouAppDataLocalProgramsPythonPython37")
print(sys.path)
print(g.c2f(32))
------------------------
......
89.6
================================
13.6 包 将模块分门别类放入文件夹,然后告诉Python文件夹位置。
创建包的具体操作如下:
1)创建文件夹,用于存放相关模块,文件夹的名字就是包的名字
2)文件夹中创建一个__init__.py的模块文件,内容可以为空
3)将相关的模块放入文件夹中
其中,第二步,必须在一个包目录下建立一个__init__.py的模块,可以
是一个空文件,也可以是一些初始代码。这个是Pyhton的规定,用来告诉
Python将该目录当作一个包来处理。
#新建文件夹M1,将zhuanhuan.py放入文件夹后,进行导入
import M1.zhuanhuan as g
print(g.c2f(32))
---------------------
89.6
=========================== M1文件夹下出现了一个__pycache__文件夹

Daodantou:“不积跬步,无以至千里.”
原文地址:https://www.cnblogs.com/daodantou/p/10480406.html