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 - if-else 的多种简洁写法
本博客原文来自:http://www.cnblogs.com/xiexiaoxiao/p/7772441.html,对原作者表示感谢,此处个人转载. 1. 常用 if ... else写法 # 语法 ...
- Kali-linux系统指纹识别
现在一些便携式计算机操作系统使用指纹识别来验证密码进行登录.指纹识别是识别系统的一个典型模式,包括指纹图像获取.处理.特征提取和对等模块.如果要做渗透测试,需要了解要渗透测试的操作系统的类型才可以.本 ...
- [转载] Python协程从零开始到放弃
Python协程从零开始到放弃 Web安全 作者:美丽联合安全MLSRC 2017-10-09 3,973 Author: lightless@Meili-inc Date: 2017100 ...
- IO流操作详解
注:FileReader继承InputStreamReader类,InputStreamReader实现Reader接口,其他同理. 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 其中, ...
- numeric_limits<>函数
因为比较有用,所以自己试验并且翻译了一下,很可能有错误,希望发现错误的朋友能给我留言纠正,谢谢! 有部分没有翻译,因为还没弄清楚到底什么作用 numeric_limits是模板类. 需要注意的是返回值 ...
- [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite
MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...
- 一篇很好的解释了.Net Core, .Net Framework, .Net standard library, Xamarin 之间关系的文章 (转载)
Introducing .NET Standard In my last post, I talked about how we want to make porting to .NET Core e ...
- C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)
最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候.MSDN上给出的例子十分复杂,网上的 ...
- Python 基础 Dict 和 Set 类型
python 什么是dict 例如: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 我们把名称称为key,对应的成绩称为value,dic就是通过key 来查找 ...
- makefile中的一些参数说明
#obj = main.o sub.o add.o div.o mul.osrc = $(wildcard *.c) #搜索.c文件 可以加路径 obj = $(patsubst %.c, %.o, ...