一、引入模块


模块:当编写更大的应用程序时,所有的代码肯定会分成多个文件,这样便于维护,另外已经编写好的函数和对象在被多个程序中使用时,不用把函数和对象拷贝到每个程序中。

模块支持以上功能,在Python中,一个.py文件就构成一个模块,通过模块,你可以调用其它文件中的程序。

模块名称:fibo.py

路径:E:\djcode\untitled

 __author__ = 'Administrator'
def laugh():
print 'HaHaHaHa'

引入模块:

 >>> import fibo     #引入了fibo模块
>>> fibo.Laugh()
HaHaHaHa
>>> fibo.__name__
'fibo' >>> from fibo import laugh #引入了fibo模块,此种引入方式fibo未定义
>>> Laugh()
HaHaHaHa

二、搜索路径


Python会在以下路径中搜索它想要寻找的模块:

程序所在的文件夹

标准库的安装路径

操作系统环境变量PYTHONPATH所包含的路径

如果你有自定义的模块,或者下载的模块,可以根据情况放在相应的路径,以便Python可以找到。

三、dir()函数


内置函数dir()用来找出模块中定义了哪些名字,它返回一个排好序的字符串列表:

 >>> import fibo
>>> dir(fibo)
['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'Laugh',]

注意它列出了所有类型的名称: 变量、 模块、 函数等。

四、包(Packages)


包:可以将功能相似的模块放在同一个文件夹中,构成一个模块包。该文件夹中必须包含一个__init__.py的文件,提醒Python,该文件夹为一个模块包,__init__.py可以是一个空文件。

目录结构:

Untitled(E:\djcode\untitled)

Directory1

D1fibo.py

Package1

__init__.py

PK1fibo.py

PK2fibo.py

PK3fibo.py

PK4fibo.py

PK5fibo.py

fibo.py

在E:\djcode\untitled目录下引入fibo.py模块

 >>> import fibo         #导入Python解释器的是fibo这个模块名称,若访问fibo模块中的函数需通过模块名称来访问
>>> fibo.laugh()
HaHaHaHa >>> from fibo import laugh #导入Python解释器的是fibo这个模块内所有的函数和对象,但不会导入fibo这个模块名称,因此fibo将未定义
>>> laugh()
HaHaHaHa

在E:\djcode\untitled目录下引入包(Package1)下的PK1fibo.py等模块:

 >>> import Package1.PK1fibo
>>> Package1.PK1fibo.laugh()
PK1fiboHaHaHaHaHaHa >>> from Package1 import PK1fibo,PK2fibo,PK3fibo,PK4fibo,PK5fibo
>>> PK1fibo.laugh()
PK1fiboHaHaHaHaHaHa >>> from Package1 import * #当包(Package1)下的__init__.py文件为空时,
该导入模块等同于from Package1 import PK1fibo,PK2fibo,PK3fibo,PK4fibo,PK5fibo,
但当前__init__.py文件中包含有__all__ = ["PK1fibo","PK4fibo","PK5fibo"],
此时等同于from Package1 import PK1fibo, PK4fibo,PK5fibo
>>> PK1fibo.laugh()
PK1fiboHaHaHaHaHaHa
>>> PK2fibo.laugh()
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'PK2fibo' is not defined

在E:\djcode\untitled目录下引入目录(Directory1)下的D1fibo.py模块:

 >>> import sys
>>> sys.path.append("Directory1")
>>> from D1fibo import laugh
>>> laugh()
D1fiboHaHaHaHaHaHa

在E:\djcode\untitled\ Directory1目录下引入fibo.py模块:

 >>> import sys
>>> sys.path.append("..")
>>> from fibo import laugh
>>> laugh()
HaHaHaHa

五、总结


from module import function

import module

__init__.py

模块(Modules)的更多相关文章

  1. vue第二十单元(vux的配置中模块modules的用法)

    第二十单元(vux的配置中模块modules的用法) #课程目标 1.什么是module? 2.怎么用module? 3.样板代码目录结构 #知识点 #1.modules 在Vue中State使用是单 ...

  2. haskell模块(modules)

    装载模块 Haskell 中的模块是含有一组相关的函数,类型和类型类的组合.而 Haskell 进程的本质便是从主模块中引用其它模块并调用其中的函数来执行操作.这样可以把代码分成多块,只要一个模块足够 ...

  3. yii2 创建模块modules

    方案一:如果模块儿较少,不用专门给模块儿目录定义别名,酱紫做就ok啦. 1.在项目根目录下面创建一个 modules 目录. 2.进入 gii : http://localhost/basic/web ...

  4. python 3环境下,离线安装模块(modules)

    说明: 需要在环境中安装python的模块,但是无法联网,就通过在Pypi上下载离线模块的包进行安装 安装过程: 1.下载模块,如PyMySQL-0.9.3.tar.gz,下载地址:https://f ...

  5. 03 深入远程执行:target目标、模块modules、返回returns

    0.学习目的 http://docs.saltstack.cn/topics/execution/index.html  官方文档 0.1 命令解释 [root@host---- ~]# salt ' ...

  6. webpack学习之——模块(Modules)

    在模块化编程中,开发者将程序分解成离散功能块(discrete chunks of functionality),并称之为模块. 每个模块具有比完整程序更小的接触面,使得校验.调试.测试轻而易举. 精 ...

  7. Lua标准库- 模块(Modules)

    Lua包库为lua提供简易的加载及创建模块的方法,由require.module方法及package表组成 1.module (name [, ···]) 功能:建立一个模块. module的处理流程 ...

  8. 深入浅出ES6(十六):模块 Modules

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 早在2007年我刚加入Mozilla的JavaScript团队的时候广为流传一个 ...

  9. Yii2 在模块modules间跳转时,url自动加模块名

    如目的地址product/detail, 当前模块是admin, 访问时如果目的url'product/detail',会变成'admin/product/detail'. 解决方法:url改成'/p ...

  10. PyQt5 模块modules

    The QtCore module contains the core non-GUI functionality. This module is used for working with time ...

随机推荐

  1. eclipse不能添加tomcat7的问题

    问题如下: 解决问题: 1.把eclipse先关了 2.把eclipse的工作空间的两个文件删除 org.eclipse.jst.server.tomcat.core.prefs和org.eclips ...

  2. 解题报告:hdu1012

    2017-09-07 21:46:53 writer:pprp 写一下水题,调节一下心情~ /* @theme: hdu 1012 u calculate e @writer:pprp @begin: ...

  3. mysql查询日期内的所有日期代码

    一.MYSQL查询最近的三个月份的简便方法: select date_format(curdate(),'%Y-%m') from dual union MONTH),'%Y-%m') from du ...

  4. 洛谷P3601 签到题

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. Dubbo 和 Spring Cloud微服务架构 比较及相关差异

    你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构. 微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务, ...

  6. java中 引用传递、值传递的理解(数组,自定义类,基本数据类型,String类)

    代码部分: public static void main(String[] args) { testInt(); testString(); testArray(); testX(); } publ ...

  7. .Net Core 修改默认的启动端口

    今天无意中发现一个变化,因为很久没看.net core的项目了,发现项目启动的默认端口已经不是5000了,记得很清楚,最早那还是.net core 1.x版本的时候,每次启动都会默认是5000端口号, ...

  8. POJ 2369 Permutations (置换的秩P^k = I)

    题意 给定一个置换形式如,问经过几次置换可以变为恒等置换 思路 就是求k使得Pk = I. 我们知道一个置换可以表示为几个轮换的乘积,那么k就是所有轮换长度的最小公倍数. 把一个置换转换成轮换的方法也 ...

  9. HDU 4739 Zhuge Liang's Mines (状态压缩+背包DP)

    题意 给定平面直角坐标系内的N(N <= 20)个点,每四个点构成一个正方形可以消去,问最多可以消去几个点. 思路 比赛的时候暴力dfs+O(n^4)枚举写过了--无意间看到有题解用状压DP(这 ...

  10. 【转】linux 新建用户、用户组 以及为新用户分配权限

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...