12.模块

原创 2015年11月19日 14:44:44

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、模块命名规范

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

[jQuery知识]jQuery之知识十二-Ajax中级

前言 1.getScript()和.getScript()和.getJSON() 2.$.ajax()方法 3.表单序列化 一.getScript()和.getJSON()jQu...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年12月10日 00:24
  • 2075

android手机中图片的拖拉及浏览功能

配置文件 activity_main.xml     android:orientation="vertical"     android:layout_width="fill_parent"  ...
  • liyuanjinglyj
  • liyuanjinglyj
  • 2013年06月27日 19:40
  • 1134

12. 正则表达式

正则表达式 是一个非常强大而实用的工具,可以用一个模式串匹配一系列符合规则的字符串。现在就请大家实现一个正则表达式的匹配工具。虽然正则表达式的规则很复杂,但其中的核心规则,只要实现就可以处理大多数的问...
  • qq_38597315
  • qq_38597315
  • 2017年06月18日 15:12
  • 281

12.正则表达式

1.基础正则表达式 ①grep的一些高级参数    -An:after的意思,除了列出该行外,后续的n行也列出来    -Bn:befer的意思,除了列出该行外,前面的n行也列出来    --colo...
  • liupeng911
  • liupeng911
  • 2014年02月19日 10:16
  • 450

traceroute命令用法

通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一...
  • charleslei
  • charleslei
  • 2016年03月19日 15:15
  • 952

java强制转换

/* 强制转换: 从大的数据类型到小的数据类型。 格式: 目标数据类型 变量 = (目标数据类型)(被转换的数据) 注意: 不要随意的去使用强制...
  • a1991y
  • a1991y
  • 2016年06月30日 22:29
  • 73

12.关于表的主外键

-------------------SQL语句---------------------- 数据库的完整性 1、实体完整性——主键 2、参考完整性——外键,关联参考另外一个表的主键的 3、用...
  • Ajinnv
  • Ajinnv
  • 2013年08月21日 11:14
  • 631

12.关于UIWindow的总结

一、UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。...
  • wangyanchang21
  • wangyanchang21
  • 2016年02月19日 15:29
  • 309

Java面试题--集合框架

这部分也包含数据结构、算法及数组的面试问题 1) List、Set、Map 和 Queue 之间的区别(答案) List 是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量访问时间...
  • oChangWen
  • oChangWen
  • 2016年05月12日 15:34
  • 1401

12. 代理模式

//传统方法 $db = IMooc\Factory::getDatabase('slave'); $info = $db->query('select name from user where id...
  • enlyhua
  • enlyhua
  • 2016年03月06日 22:58
  • 283
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:12.模块
举报原因:
原因补充:

(最多只允许输入30个字)