day 3 模块
1.系统自带模块 xxx.py 文件 就是模块
### 模块存放位置
In [1]: import os In [2]: os.__file__
Out[2]: '/usr/lib/python3.5/os.py'
python@ubuntu:~$ cd /usr/lib/python3.5/
python@ubuntu:/usr/lib/python3.5$ ls
abc.py html selectors.py
aifc.py http shelve.py
antigravity.py idlelib shlex.py
argparse.py imaplib.py shutil.py
ast.py imghdr.py signal.py
asynchat.py importlib _sitebuiltins.py
asyncio imp.py sitecustomize.py
2.第三方模块
#### 安装第三方模块
python@ubuntu:~$ sudo pip install pycharm
3.自定义模块
1)版本1:import sendmsg
#### sendmsg.py def test1():
print("----test1") def test2():
print("----test2") test1()
test2()
######### main.py
import sendmsg
sendmsg.test1()
sendmsg.test2()
####运行结果 python3 main.py
----test1
----test2
.
├── main.py
├── __pycache__
│?? └── sendmsg.cpython-35.pyc
c语言写的python解释器 3.5版本 字节码
├── recvmsg.py
└── sendmsg.py
2)版本2: from sendmsg import test1,test2
### main.py
from sendmsg import test1,test2
test1()
test2()
3)版本3:导入1000个方法
### main.py
from sendmsg import * #不推荐使用,切记
#from recvmsg import * #recvmsg模块有可能有test1()方法 test1()
test2()
test2()
test2()
#### main.py
import sendmsg
sendmsg.test1()
sendmsg.test2()
sendmsg.test2()
sendmsg.test2()
4)版本4: as 针对模块名字较长的使用
In [1]: import time as tt In [2]: tt.time()
Out[2]: 1511591526.7604477
4.__name__变量
自己测试,执行test1()
老板导入sendmsg.py 模块,不执行test1()
#### sendmsg.py 模块
def test1():
print("----test1") def test2():
print("----test2") test1()
test2() python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 sendmsg.py
----test1
----test2
### main.py
import sendmsg
sendmsg.test1()
sendmsg.test2() python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 main.py
----test1
----test2
----test1
----test2
2)版本2:什么是__name__变量
python@ubuntu:~/pythonS6/python基础092/06-模块$ cat sendmsg.py def test1():
print("----test1") def test2():
print("----test2") print(__name__)
test1()
test2()
python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 sendmsg.py
__main__
----test1
----test2 python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 main.py sendmsg #打印的是模块名
----test1
----test2
----test1
----test2
3)版本3:
def test1():
print("----test1") def test2():
print("----test2") #print(__name__) #__main__
if __name__ == "__main__": #如果自己测试,执行下面的语句 #如果老板导入模块,不执行
test1()
test2()
python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 sendmsg.py
----test1
----test2
python@ubuntu:~/pythonS6/python基础092/06-模块$ python3 main.py
----test1
----test2
总结:
- 可以根据__name__变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码
5.程序大体框架
class Xxx(object):
pass def xxx():
pass def main():
pass if __name__ == "__main__": #别人调用上面的方法不执行
main() #自己测试,执行
day 3 模块的更多相关文章
- npm 私有模块的管理使用
你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- Python标准模块--Unicode
1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...
- Python标准模块--Iterators和Generators
1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...
- 自己实现一个javascript事件模块
nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...
- 理解nodejs模块的scope
描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...
- nodejs模块发布及命令行程序开发
前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...
- 开始学nodejs——net模块
net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket ...
随机推荐
- python strip()
函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头 ...
- [转载] Python协程从零开始到放弃
Python协程从零开始到放弃 Web安全 作者:美丽联合安全MLSRC 2017-10-09 3,973 Author: lightless@Meili-inc Date: 2017100 ...
- wepy build 错误 [Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件。
[Error] 未发现相关 less 编译器配置,请检查wepy.config.js文件. 缺少less包,npm install less -d
- springboot项目用maven打jar包
clean package -Dmaven.test.skip=true idea eclipse STS
- Java java httpclient4.5 进行http,https通过SSL安全验证跳过,封装接口请求 get,post(formdata,json)封装,文件上传下载
package api; import java.util.*; import java.net.URI; import org.apache.http.Consts; import org.apac ...
- PAT——1045. 快速排序(25)
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的N个互不相同的正整数的排列,请问有多 ...
- [Luogu1282]多米诺骨牌(DP)
#\(\color{red}{\mathcal{Description}}\) \(Link\) 我们有一堆多米诺骨牌,上下两个部分都有点数,\(But\)我们有一个操作是可以对调上下的点数.若记一块 ...
- [Luogu2622]关灯问题$||$(状压$DP$)
#\(\color{red}{\mathcal{Description}}\) \(Link\) 现有\(n\)盏灯,以及\(m\)个按钮.每个按钮可以同时控制这\(n\)盏灯--按下了第i个按钮,对 ...
- ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)
这篇文章主要介绍了oracle中rownum和row_number()的使用方法以及区别和联系,十分的详细,有需要的小伙伴可以参考下. row_number()over(partition by ...
- html中的meta元素及viewport属性值
<meta name="viewport" content="width=device-width , initial-scale=1.0, maximum-sca ...