扩展你的程序——创建模块,使用库
2016-06-08 11:00
417 查看
模块
为了让代码可重用,使用模块化。1. 导入自己的程序作为模块
import sys sys.path.append('C:/Users/xxx') #加入所写程序的目录,不是程序的路径,是目录 import module导入模块时会使代码执行一次(只执行一次——在两个模块互相导入的时候可以起到优化的作用)
sys.path 告诉解释器在哪找到模块。
实际上还有一种方法:
将写的模块放置到 Python文件夹下面的 site-packages 下,这个目录怎么来的?
import sys, <a target=_blank href="http://www.pythontab.com/html/2014/pythonjichu_1021/893.html">pprint</a> pprint.pprint(sys.path)跟sys.path 很相似的——PYTHONPATH环境变量(根据OS,OS的一部分)
2. 模块也有作用域
模块里面的函数,变量,类都是模块的特性。
如果遇上测试代码,为了不让在import 函数的时候将测试代码执行,可以采取:
def hello(): print 'hello world!' def test(): #单独放置一个测试函数 hello() if __name__ == '__main__':test()
__name__ 让你明白是使用模块or真正运行,在主程序中__name__ 的值是 __main__,在导入模块中__name__ 的值是模块名
3. 在包中包含模块
模块所放文件夹 = 包,要使包有效就必须在包中加入__init__.py,同时要记住将包的上一级文件放到环境变量PYTHONPATH 中
import package
from package import module
import package.module :只能通过 package.module使用
4. 对模块进行操作,更加了解你想知道的模块
dir : 了解模块的特性,__all__——定义模块公用接口
import copy listx = [n for n in dir(copy) if not n.startswith('_')] listy = [n for n in dir(copy)] print listx print listy print copy.__all__module.__file__:打印出模块位置,就可以进去查看源代码了
标准库
1.os
顾名思义与操作系统有关,“This module provides a portable way of using operating system dependent functionality.”
不同的操作系统有不同的使用方法
a. Windows 下打开一个程序
import os os.system(r'D:\SF\Ubisoft Game Launcher\Uplay.exe')# this cannot work os.system(r'D:\"SF"\"Ubisoft Game Launcher"\Uplay.exe') os.startfile(r'D:\SF\Ubisoft Game Launcher\Uplay.exe')os.system() 在IDLE中会打开一个DOS 窗口,并且路径中含有空格,DOS就会停止执行,所以要对有空格的路径加上一个引号
os.starfile() 则没有那么麻烦。
Windows 启动了外部程序,Python 会继续运行
Unix 中会等待os.system 执行结束再执行下一段代码
2.
sys
这个模块是与解释器有关的,“This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available.” 提供了一些与解释器相关的变量和函数,总之就是与解释器相关的。
安装库
可以使用pip(提前安装pip组件)下载,但是如果网络有问题or设置代理方面的or源有问题,pip可能会出问题
我比较习惯于在网上下载相应的程序包,看到程序包里面有一个setup.py 的程序,在当前文件夹进行 cmd。
运行命令:python setup.py install
相关文章推荐
- JS深入了解闭包
- 名词释义(ActiveMQ 和 Webservice)
- 使用substring方法进行字符串拆分
- Delphi中Frame的使用方法(1)
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- 新浪微博Oauth2.0授权 获取Access Token以及API的使用
- 动态规划1-集合加法(算法基础 第4周)
- java动态代理
- 推送
- 小结——面向对象
- jQuery列表拖动排列-jquery list dragsort插件参数和使用方法
- 环境变量
- python汉字乱码问题
- 给Elasticsearch 和Kibana添加基于角色的访问权限控制
- iOS: 玩转UICollectionViewLayout
- iOS 9新特性之官方文档(翻译)
- 定时器
- UFDL 中文教程
- 150. Evaluate Reverse Polish Notation
- sql语句中----删除表数据drop、truncate和delete的用法