模块使用以及面向对象介绍

一、模块介绍
1.什么是模块
模块是Python组织代码的基本方式,一个Python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导热油运行时,我们将其称为模块。(module)所有的.py文件都可以作为一个模块导入。
2.如何导入模块。
模块名字和脚本名字相同,比如我们编写一个hello.py的脚本,则可以在另外一个脚本中用import hello语句来导入它。
3.包,什么是包?
Python的模块可以按目录组织为包。包就是一个模块的集合。
如何创建一个包?
(1)创建一个名字为包名的的目录,注意是目录。
(2)必须在该目录下创建一个__init__.py文件,这个是必须创建的,空文件也可以,有这个文件才会识别为一个包。
(3)根据需要,在该目录下存放脚本文件或已编译的扩展及子包。
(4)使用import pack.m1,pack.m2这样中方式来导入包和包里的模块。
二、模块环境变量
1.查看Python的环境变量。
使用ipython或者其他IDE工具,导入sys模块,使用sys.path方法
import sys
sys.path
.3
返回的是一个列表,当我们要使用一个模块的时候,会从上到下的找,如果没有这个模块会报错。

一般内置模块都放在了。/usr/lib64下。
2.自定义Python path
我们新建了一个包里面放了很多模块,如果加入到Python的path中呢。
第一种方法:在ipython下,使用sys.path.append('/home/work/tools')

会看到加入到了最下面中了。
第二种方式:
修改root的path中。
vim /root/bashrc
export PYTHONPATH=/home/work/tools
./root/.bashrc执行生效。
这种方式,可以放在前面,而不是最后。
三、调用自定义模块。
1.来做一个小练习,统计文件的字符数,单词数和行数
def wordCount(s):
chars = len(s) #统计单词的长度,也就是字符的数量
words = len(s.split()) #统计单词的数量,通常一个单词用空格来分隔,所有可以用split方法来切分空格,在用len函数得到具体数量。
lines = s.count('\n') #使用count方法来统计出行数,只要知道有多个换行符就知道有多少行了。
print lines,words,chars
s = open('/etc/passwd').read()
wordCount(s)

和wc命令出来的结果是一样的。
然后编写一个3.py 导入2.py 看看是否可以执行

报错,是不行的,因为脚本的命令也是有要求的,不能以数字开头、改成wc.py试一试效果



这样就可以了,会自动生成一个wc.pyc编译的文件。

2.如果我们需要使用wc模块里的函数怎么做呢?
如果我们直接用的话
import wc
s = '''hello world
python
by zy'''
wordCount(s)

会报错,没有wordCounts这个函数。所以要加上wc模块名才可以调用。
import wc
s = '''hello world
python
by zy'''
wc.wordCount(s)


3.可以看到结果输出的是2行,但是需求上不能显示第一行的结果怎么做呢?
使用import wc 实际上就是执行了一遍wc.py这个脚本。
把wc.py修改下:
def wordCount(s):
chars = len(s)
words = len(s.split())
lines = s.count('\n')
print lines,words,chars
这样就可以了。

4.但是这种是牺牲了wc.py的输出结果。也不是我们的需求。我们既要做到不影响源文件的输出结果,后面脚本调用也不现实模块文件的结果。
首先先了解一下__name__这个内置变量。
print __name__

如果执行3.py的话,会看到输出了模块的文件名字。

然后就可以做个判断了
def wordCount(s):
chars = len(s)
words = len(s.split())
lines = s.count('\n')
print lines,words,chars
if __name__ == '__main__': #如果name 等与main的话 说明是在执行源文件
s = open('/etc/passwd').read()
wordCount(s)

执行源文件输出结果没问题,在看执行3.py的结果。

也没问题。

四、包的使用
1.如何调用包,
(1)先创建一个包
mkdir bao/
cd bao/
touch __init__.py

(2)进入ipython中或者IDE中
from bao import wc 这就是包的调用。但是要注意的是包要放在Python的环境变量中才可以生效不然会报错。这样就可以调用了wc里的函数了。

或者也可以这样调用
import bao.wc
使用函数的话还需要些上包名

这样就比较麻烦,写很多前缀,可以简化直接写函数。用
form bao.wc import wordCount
可以直接调用wordCount函数

还可以起别名,输入函数的名字太多了的情况,可以调用别名。
这么来写
form bao.wc import wordCount as wc

五、面向对象介绍
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。
接下来我们先来简单的了解下面向对象的一些基本特征。
1.数值称为数值对象,列表称为列表对象。
2.和面向过程相对应。在以前所写的脚本,都是面向过程的。面向过程就是分析出解决问题需要的步骤,然后通过函数去一步一步实现。最后使用的时候在一步一步调用。面向过程典型的语言是C语言。shell 也是面向过程。
3.什么是面向对象?把数据和数据的一些操作方法,放在一起,作为一个相互依存的整体,对这个整体我们可以称为对象。
4.面对相同的问题,使用面向对象的思想来做的话,我们先创建一个类,在类里面在定义一个属性,这些属性可以理解为变量,在定义一些方法,可以理解为函数。
六、类和对象
1.类和对象:是面向对象中的2个重要的概念。
类:是对事物的抽象,比如:人类,球类。
对象:是类的一个实例,比如足球,篮球。
实例说明:球类可以对求的特征和行为进行抽象,然后可以实例化一个真实的球实体出来。
类里面有属性,比如人类中的五官,眼睛鼻子 都是属性,还有一些方法,吃穿住行都是方法。
静态属性,动态方法
2.为什么使用面向对象?
面向对象的主要思想是:封装!继承!多态!
这种思想方便解决较为复杂的项目,且维护起来较为容易。
3.类的定义
类定义:就是类把需要的变量和函数组合成一起,这种包含称为“封装”
class A(object): 这就是定义一个类,继承object类。类的名字和之前定义函数和变量差不多。命名原则遵循:一个单词就是首字母大写,多个单词就是每个单词首字母都大写。
定义一个类:
class People(object):
color = 'yellow' #这个就是一个属性
ren = People() #实例化类,就是把类赋值给一个变量,这个变量的类型是一个方法。要访问类 就必须实例化一下。
print ren.color #调用类的属性,就需要使用ren这个对象然后跟属性
得到结果:

class People(object):
color = 'yellow'
def think(self): #这个就是一个方法,动态的方法,定义方法的时候,方法中至少要有一个self,代表这个类本身。
self.color = "black" #在这个方法里,也可以使用属性,必须要加上self,代表使用类本身的属性。
print "i am a %s" % self.color
print "i am a thinker"
ren = People()
print ren.color
ren.think() #和调用函数一样


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值