关闭

12.模块

169人阅读 评论(2) 收藏 举报
分类:

1、什么是模块?

个人理解:不恰当的说,我们都取过钱,java牌的ATM机(一个java文件)就吐100元(要么使用静态成员、要么拿实例对象),而python牌的ATM机(一个py文件)1元、5元、10元、20元、50元、100元(函数、类、一个全局变量、零散的都能单独导入)都能吐出来……,这算python的牛逼之处吗?

答:逻辑层面的代码片段组合在一起就叫个模块。而模块的目的一是有效组织,二就是为了代码复用(像java的复用就是继承与组合)


2、模块与文件?

答:一个模块可以看作是一个文件、一个py文件也可以看作成是一个模块。

模块的文件名,就是 模块名称.py


3、模块名称条件

def digui(temp):
    pass
我的这个函数在文件test_block.py下, digui函数的全称为 test_block.digui()

4、默认搜索路径

如果查看当前python解释器在你的电脑哪些路径下搜索模块呢?

答:下面通过sys.path变量里有你的默认搜索路径

>>> import sys
>>> sys.path
['D:/temp', 'C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']
我们看到默认的搜索路径是个List,此时假设你的模块不在路径里,那怎么办啊?

答:请看5。。


5、修改默认的搜索路径

>>> import sys
>>> sys.path
['C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']
>>> sys.path.append("D:\tempVersion")
>>> sys.path
['C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'D:\tempVersion']
通过append函数加入字符串路径到List里面,这样你的默认搜索路径就多了一个,赞赞赞,我们自己的模块就是放在哪里,我们也不怕

假设你的模块叫myBoss,那么解释器就会在上面List中所有路径下寻找my_boss.py的文件


6、怎么导入模块啊?

答: 这……我们终于要深入了

import os


也可以一下子导入多个模块,逗号很厉害哦

import os, sys
不建议这么写……………………,免得阅读代码的时候,会感到不爽


7、导入模块中的一个属性(包括变量、函数、类)统称属性哈

from 模块名称 import 属性


8、多行导入………………,秘诀在 \ ,python中 换行

from Tkinter import Tk, Frame, Button, Entry, Canvas, \
Text, LEFT, DISABLED, NORMAL, RIDGE, END


当然也可以分行导入

from Tkinter import Tk, Frame, Button, Entry, Canvas, Text
from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END


9、as语句

把别人的模块或者模块属性换成自己想要的名称,cao,刚需啊

from A import b as love  # 从模块A导入属性b,然后换成名称love

import B as me   # 导入模块b,然后换成名称me


10、粗暴的使用,哈哈

from A import love #这样我们就不需要A.love了,直接在文件里 love 就可以访问了

那么粗暴是指什么? 就是 from A import *  #导入一个模块中的所有属性…………,不过绝对不建议这么做………………


11、python可以导入zip文件,即zip文件里面都是Python 模块(.py, .pyc, or .pyo 文件)的 .zip 文件


12、关于import的内建函数(内置函数),以后遇到再去深入吧,let us jump!!


13、包

答:终于到包了……包里面就是放的一堆模块或者还有一堆子包……子包里当然还是模块…………。爱就是爱,说也说不清楚,来个例子吧…………

windows下有模块

D:\TEMP\color.py 


好 我们要导入color.py了               TEMP就称为包

import TEMP.color   #包也使用句点属性标识来访问他们的元素


我们还可以:

第一种方法是只导入顶层的子包, 然后使用属性/点操作符向下引用子包树:
from Phone import Mobile
Mobile.Analog.dial('555-1212')

此外, 我们可以还引用更多的子包:
from Phone.Mobile import Analog
Analog.dial('555-1212')


事实上, 你可以一直沿子包的树状结构导入:
from Phone.Mobile.Analog import dial
dial('555-1212')


14、与java对比

答:java最小的导入单位是class(一个java文件),而python中就是模块(一个py文件),因为java是纯面向对象语言,而python是面向过程与面向对象都可以搞,一个模块中可以即有面过过程的函数、也可以有类,作者牛逼


总结:这一章,我们一定要理解包与模块之间的关系,还有一些零碎的知识,需要我们在未来实践中,慢慢去完善……学习知识,就像滴水穿石


15、模块命名规范

答:小写字母、单词用_分隔开

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:97501次
    • 积分:2912
    • 等级:
    • 排名:第12143名
    • 原创:185篇
    • 转载:62篇
    • 译文:6篇
    • 评论:21条
    最新评论