Python (十二)模块

Python的内置函数 https://docs.python.org/2/index.html


一、

Python模块,一个.py文件就是一个模块,模块中可以有很多的函数,不同的模块之间可能存在命名冲突的问题,使用包名可以解决这样的问题。只要包名不相同与内置的函数命名没有冲突就不会存在命名冲突的问题。

一个包含有__init__.py的文件夹就是一个包,只有包含有这个文件的文件夹才会被识别为一个包,__init__.py文件的内容可以使引用其他文件也可以是引用自己所在的包的内容,也可以什么都不写。

这个目录结构中,mycompany就是包名,在使用内部的模块的时候只需要将包名引入就可以使用了

注意:不可缺少__init__.py文件。

二、使用

(1)在同一个目录中引用

Python搜索库的顺序:当前文件、系统文件、第三方库

所以在当前的文件夹中引用直接声明就可以,不需要指明具体的路径

在磁盘上创建一个文件夹mycompany

在文件夹中创建两个Python文件,abc.py   xyz .py这两个文件的内容都是实现排序,顺序正好相反。

abc.py

def sort(num):
	for x in xrange(0,len(num)):
		for y in xrange(0,len(num)):
			if num[x] >= num[y]:
				t = num[x]
				num[x] = num[y]
				num[y] = t
 	return num

xyz .py

def sort(num):
	for x in xrange(0,len(num)):
		for y in xrange(0,len(num)):
			if num[x] <= num[y]:
				t = num[x]
				num[x] = num[y]
				num[y] = t
 	return num

if __name__ == '__main__':
	L = [90,2,3,4,65,23]
	print sort(L)

再创建一个__init__.py文件。文件内容为空

在G盘创建一个test.py文件,测试使用上面定义的模块

import mycompany    引入包

if __name__ == '__main__':
	S = [2,43,1,8,56]
	print mycompany.abc.sort(S)
	print mycompany.xyz.sort(S)
注意:模块在引入的时候有两种,第一种是只引入包名,之后在使用的模块的时候必须  通过包名 . 模块名 . 函数  这样的方式引用函数内容

第二种,引入某一个具体的函数,在使用的时候就可以直接使用函数不再需要以上的方式引用函数。

import mycompany
<span style="color:#FF0000;">from mycompany.abc import sort</span>

if __name__ == '__main__':
	S = [2,43,1,8,56]
	<span style="color:#FF6666;">print sort(S)</span>
	print mycompany.xyz.sort(S)

三、第三方模块

Python有很多内置的模块,只需要安装之后就可以使用

#!/usr/bin/env python
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print 'Hello, world!'
    elif len(args)==2:
        print 'Hello, %s!' % args[1]
    else:
        print 'Too many arguments!'

if __name__=='__main__':
    test()
命令行参数的使用是在sys模块

四、别名

再导入模块的时候还可以使用别名实现

try:
   <span style="color:#FF0000;"> import cStringIO as StringIO</span>
except ImportError: # 导入失败会捕获到ImportError
    import StringIO
五、作用域

在C中变量的作用域分为全局变量、局部变量、静态变量等,各自的生命周期也不一样。在Python中也是这样。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途。,一般不这样定义变量。

类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc

private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

这个规定对于函数来说也是一样的,这个需要注意

六、模块的搜索路径

自定义的模块和使用的文件不在同一个目录下的时候,在使用的时候就需要告诉程序如何找到自定义的模块,这就需要在搜索中添加搜索的路径。

import sys
sys.path.append(r'模块所在的路径')

在程序的开始处添加这样的语句,系统就会到添加的路径中搜索,这样的方式只在当前有效,还可以直接添加到系统中(根据需求)

import sys
sys.path.append(r'G:\\')
import mycompany

if __name__ == '__main__':
	S = [2,43,1,8,56]
	print mycompany.abc.sort(S)
	print mycompany.xyz.sort(S)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值