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 模块的更多相关文章

  1. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  2. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  5. Python标准模块--Unicode

    1 模块简介 Python 3中最大的变化之一就是删除了Unicode类型.在Python 2中,有str类型和unicode类型,例如, Python 2.7.6 (default, Oct 26 ...

  6. Python标准模块--Iterators和Generators

    1 模块简介 当你开始使用Python编程时,你或许已经使用了iterators(迭代器)和generators(生成器),你当时可能并没有意识到.在本篇博文中,我们将会学习迭代器和生成器是什么.当然 ...

  7. 自己实现一个javascript事件模块

    nodejs中的事件模块 nodejs中有一个events模块,用来给别的函数对象提供绑定事件.触发事件的能力.这个别的函数的对象,我把它叫做事件宿主对象(非权威叫法),其原理是把宿主函数的原型链指向 ...

  8. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  9. nodejs模块发布及命令行程序开发

    前置技能 npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫 ...

  10. 开始学nodejs——net模块

    net模块的组成部分 详见 http://nodejs.cn/api/net.html 下面整理出了整个net模块的知识结构,和各个事件.方法.属性的用法 net.Server类 net.Socket ...

随机推荐

  1. Python - if-else 的多种简洁写法

    本博客原文来自:http://www.cnblogs.com/xiexiaoxiao/p/7772441.html,对原作者表示感谢,此处个人转载. 1. 常用 if ... else写法 # 语法 ...

  2. Kali-linux系统指纹识别

    现在一些便携式计算机操作系统使用指纹识别来验证密码进行登录.指纹识别是识别系统的一个典型模式,包括指纹图像获取.处理.特征提取和对等模块.如果要做渗透测试,需要了解要渗透测试的操作系统的类型才可以.本 ...

  3. [转载] Python协程从零开始到放弃

    Python协程从零开始到放弃 Web安全 作者:美丽联合安全MLSRC   2017-10-09  3,973   Author: lightless@Meili-inc Date: 2017100 ...

  4. IO流操作详解

    注:FileReader继承InputStreamReader类,InputStreamReader实现Reader接口,其他同理. 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 其中, ...

  5. numeric_limits<>函数

    因为比较有用,所以自己试验并且翻译了一下,很可能有错误,希望发现错误的朋友能给我留言纠正,谢谢! 有部分没有翻译,因为还没弄清楚到底什么作用 numeric_limits是模板类. 需要注意的是返回值 ...

  6. [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite

    MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...

  7. 一篇很好的解释了.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 ...

  8. C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)

    最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候.MSDN上给出的例子十分复杂,网上的 ...

  9. Python 基础 Dict 和 Set 类型

    python 什么是dict 例如: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 我们把名称称为key,对应的成绩称为value,dic就是通过key 来查找 ...

  10. makefile中的一些参数说明

    #obj = main.o sub.o add.o div.o mul.osrc = $(wildcard *.c) #搜索.c文件 可以加路径 obj = $(patsubst %.c, %.o, ...