python怎么把sleep()封装成公共函数方法

Python011

python怎么把sleep()封装成公共函数方法,第1张

首先呢,sleep就是一个函数,

# 使用方法

import time

time.sleep(1) # 睡眠1s种

当然你要二次封装也没有问题

import time

def diy_sleep(times=3)  # 你可以传参也可以不传参,默认是休眠3s

    time.sleep(times)

这样 你就可以直接应用diy_sleep()函数

1 封装概述

封装(Encapsulation),指的是在设计类时, 将不需要对外提供的内容都隐藏起来,提供公共方法以供外部对其访问。

具体指的是刻意地将一些属性和方法隐藏(私有化)在类的内部,这样在使用此类时,将无法直接以类对象.属性名、或 类对象.方法名(参数) 的形式调用这些私有属性或私有方法,而只能用未隐藏的公有方法间接操作这些隐藏的私有属性和私有方法。

封装的优点,如下所示:

封装保证了类内部数据结构的完整性:封装之后,用户无法直接看到类中的数据结构,只能使用类允许公开的数据(通常指公有方法),很好地避免了外部对内部数据的影响,提高了程序的可维护性。

封装数据可以很好的保护隐私。

封装方法的主要原因是隔离复杂度。

封装提高了代码的复用性。

还可以轻松实现避免用户对类中属性和方法的不合理操作:用户只能借助暴露出来的类方法来访问数据,我们只需要在这些暴露的方法中加入适当的控制逻辑,即可轻松实现用户对类中属性或方法的不合理操作。

2 Python 类的简单封装

为了实现 Python 类的封装,Python 采取了下面的方法:

公有(共有):默认情况下,类中的变量和方法都是公有的,它们的名称前都没有下划线,公有的变量和方法,在类的外部、类内部以及子类中,都可以正常访问。

私有:类中的变量或方法以双下划线 __ 开头命名,则该变量或方法为私有的,私有的变量或方法,只能在本类内部使用,类的外部以及子类都无法使用。

也有把变量名或方法名以单下划线 _ 开头定义的,通常也表示私有的。

首先我们查看下md5值的使用方法

我们先建立几个示例文件方便我们参考,文件file1,file1_copy,file2

python 怎样进行文件对比

2

file1的内容和file1_copy的内容一致,都为

我是文件hello

为了测试我们的文件一致性

python 怎样进行文件对比

3

file2的内容和file1的文件有所区别,内容为:

我是文件world

python 怎样进行文件对比

4

接下来就是获取md5的方法,我可以了个公共方法,大家直接调用就好

需要导入包

import os

import hashlib

def get_file_md5(filename):

if not os.path.isfile(filename):

return

md5 = hashlib.md5()

f = file(filename,'rb')

while True:

b = f.read(8096)

if not b:

break

md5.update(b)

f.close()

return md5.hexdigest()

然后我们打印下这几个文件的md5值

print 'file1 的md5:%s' % get_file_md5('file1.txt')

print 'file1_copy的md5:%s' % get_file_md5('file1_copy.txt')

print 'file2 的md5:%s' % get_file_md5('file2.txt')

python 怎样进行文件对比

5

运行python结果可以看到,file1和file1_copy文件的md5值是一样的,说明这两个文件是一样的,file2和他们不一样

python 怎样进行文件对比

6

接下来就是使用difflib详细的对比了,写法如下:

import difflib

import sys

file1 = open('file1.txt', 'U').readlines()

file2 = open('file2.txt', 'U').readlines()

diff = difflib.ndiff(file1, file2)

sys.stdout.writelines(diff)

python 怎样进行文件对比

7

运行python结果可以看到,具体两个文件的区别

我是文件

- hello+ world

python 怎样进行文件对比