python入门系列7―——模块
来源:互联网 发布:淘宝网狗狗鞋子 编辑:程序博客网 时间:2024/06/01 20:35
欢迎前往我的个人博客
模块其实就是一个python文件,我们在大型项目里,不可能只写一个文件需要很多文件不同文件内的函数、变量调用就需要用到模块概念
使用import导入一个模块,比如之前的
import time使用方法: 模块名.函数
如果确保不会导入多个同名函数,则可以使用 from 模块名 import 函数名,这样调用就不需要加模块名了
例:
import mathprint math.floor(9.99)from math import floorprint floor(9.99)
之前我们导入的都是python内置的模块,如果导入我们自己的模块呢
在同一个文件夹下新建2个记事本,修改后缀名,命名test1.py和test2.py
test1.py 代码如下:
def add(num1,num2): return num1+num2定义一个加法函数
test2.py 代码如下:
import test1print test1.add(10,20)结果是:30
为什么python能找到这个test1.py呢?
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在环境变量PYTHONPATH下的目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
如果都不在这几个目录,我们可以使用sys.path来添加目录
例如:
improt syssys.path.append('c:/python')想查看path有哪些目录,可以直接print:
import sysprint sys.path看着有点乱,可以导入智能打印,就是pprint:
import sys,pprintprint pprint.pprint(sys.path)
如果一个模块文件有非常多的函数,不可能打开文件一个个对照着调用,我们可以使用dir(模块名)
我们先丰富下test1.py:
filename ="test1.py"def add(num1,num2): return num1+num2def Sub(num1,num2): return num1-num2test2.oy:
import test1print dir(test1)输出结果是:
['Sub', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'add', 'filename']__xxx__都是特殊字符,__name__指向模块的名字,__file__指向该模块的导入文件名
包
为了更好的组织模块,可以把一类模块分组给一个包,包名其实就是模块所在目录
在test1.py同级创建一个文件夹MyPackage,文件夹下创建4个python文件分别是是p1.py,p2.py,p3.py,__init__.py
__init__.py 用于标识当前文件夹是一个包,代码:
print "HiPackage init"
p1.py代码:
def Myprint():print "this is p1"return
p2.py代码:
def Myprint():print "this is p2"return
p3.py代码:
def Myprint():print "this is p3"returntest2.py:
import Hipackage.p1,Hipackage.p2,Hipackage.p3Hipackage.p1.Myprint()Hipackage.p2.Myprint()Hipackage.p3.Myprint()结果:
MyPackage initthis is p1this is p2this is p3
- python入门系列7―——模块
- python入门系列19―——GUI wxpython入门
- python入门系列20―——GUI Tkinter入门
- python入门—1模块_1_time
- Python一天入门7:模块
- python入门系列1―——helloworld
- python入门系列2―——运算符
- python入门系列3―——数据类型
- python入门系列4―——语句
- python入门系列5―——时间日期
- python入门系列6―——函数
- python入门系列8―——I/O
- python入门系列9―——文件处理
- python入门系列11―——异常处理
- python入门系列12―——面向对象
- python入门系列10―——Excel操作
- python入门系列16―——格式化
- python入门系列16―——正则表达式1
- 采用dlopen、dlsym、dlclose加载动态链接库【总结】
- Android studio 报错 java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowExcep 解决方
- angularJs-The factory and service of angularJs
- 火狐Firefox浏览器 历史版本下载地址
- HTTP请求报文和HTTP响应报文
- python入门系列7―——模块
- Java机器学习库ML之七分类预测输出概率值
- ubuntu16.04下,JDK的安装,卸载和切换
- 前辈们的技术博客
- [Leetcode] 227. Basic Calculator II 解题报告
- Linux防火墙机制
- N皇后问题
- 树学习(7)
- 技术向:一文读懂卷积神经网络