模块(Modules)
一、引入模块
模块:当编写更大的应用程序时,所有的代码肯定会分成多个文件,这样便于维护,另外已经编写好的函数和对象在被多个程序中使用时,不用把函数和对象拷贝到每个程序中。
模块支持以上功能,在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)的更多相关文章
- vue第二十单元(vux的配置中模块modules的用法)
第二十单元(vux的配置中模块modules的用法) #课程目标 1.什么是module? 2.怎么用module? 3.样板代码目录结构 #知识点 #1.modules 在Vue中State使用是单 ...
- haskell模块(modules)
装载模块 Haskell 中的模块是含有一组相关的函数,类型和类型类的组合.而 Haskell 进程的本质便是从主模块中引用其它模块并调用其中的函数来执行操作.这样可以把代码分成多块,只要一个模块足够 ...
- yii2 创建模块modules
方案一:如果模块儿较少,不用专门给模块儿目录定义别名,酱紫做就ok啦. 1.在项目根目录下面创建一个 modules 目录. 2.进入 gii : http://localhost/basic/web ...
- python 3环境下,离线安装模块(modules)
说明: 需要在环境中安装python的模块,但是无法联网,就通过在Pypi上下载离线模块的包进行安装 安装过程: 1.下载模块,如PyMySQL-0.9.3.tar.gz,下载地址:https://f ...
- 03 深入远程执行:target目标、模块modules、返回returns
0.学习目的 http://docs.saltstack.cn/topics/execution/index.html 官方文档 0.1 命令解释 [root@host---- ~]# salt ' ...
- webpack学习之——模块(Modules)
在模块化编程中,开发者将程序分解成离散功能块(discrete chunks of functionality),并称之为模块. 每个模块具有比完整程序更小的接触面,使得校验.调试.测试轻而易举. 精 ...
- Lua标准库- 模块(Modules)
Lua包库为lua提供简易的加载及创建模块的方法,由require.module方法及package表组成 1.module (name [, ···]) 功能:建立一个模块. module的处理流程 ...
- 深入浅出ES6(十六):模块 Modules
作者 Jason Orendorff github主页 https://github.com/jorendorff 早在2007年我刚加入Mozilla的JavaScript团队的时候广为流传一个 ...
- Yii2 在模块modules间跳转时,url自动加模块名
如目的地址product/detail, 当前模块是admin, 访问时如果目的url'product/detail',会变成'admin/product/detail'. 解决方法:url改成'/p ...
- PyQt5 模块modules
The QtCore module contains the core non-GUI functionality. This module is used for working with time ...
随机推荐
- LeetCode——Largest Rectangle in Histogram
Question Given n non-negative integers representing the histogram's bar height where the width of ea ...
- c# 过滤HTML代码 源代码,案例 下载
#region 过滤HTML代码 //替换掉html字符,只显示文字信息. public string replaceHtmlCode(string Htmlstring) { Htmlstring ...
- Redis可以做哪些事儿?
Redis可以作为数据库,提供高速缓存,消息队列等功能,这里介绍Redis可以做的其中两件事: 1.提供缓存功能,作为缓存服务器; 2.轻量级的消息队列(MQ)进行使用. /// <summar ...
- Mac下配置NDK环境
下载NDK 这里写图片描述配置NDK开发环境 第一步:打开Mac终端 Snip20170208_1.png 第二步:在终端中输入:open -e .bash_profile,打开.bash_profi ...
- ios 下拉刷新开源框架 MJRefresh
gitHub 下载框架 搜索MJExampleViewController.h 下拉刷新 MJTableViewController 上拉刷新 MJTableViewController Collec ...
- 文件load事件:img、iframe
iframe的 load 事件 在所有为IFRAME动态添加onload监听事件的方法中,只有 使用事件监听方式为 IFRAME 的 onload 事件绑定处理函数,IE6.7.8才有效.所以为 IF ...
- 最简js深浅拷贝说明
1.浅拷贝 浅拷贝是拷贝引用,拷贝后的引用都是指向同一个对象的实例,彼此之间的操作会互相影响. 浅拷贝分两种情况: 1.直接拷贝源对象的引用 2. 源对象拷贝实例,但其属性对象(类型为Object, ...
- 《OpenCL编程指南》之 与Direct3D互操作
介绍OpenCL与D3D 10之间的互操作. 1.初始化OpenCL上下文实现Direct3D互操作 OpenCL共享由pragma cl_khr_d3d10_sharing启用: #pragma O ...
- Linux下安装Nginx教程
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- bzoj 3197
题解: 先找到中信 然后dp 代码: #include<bits/stdc++.h> using namespace std; ; ],a[N],b[N],s[N],c[N],f[N]; ...