Python开发运维之路day7

一、编程思想介绍

1.编程范式

编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。两种最重要的编程范式分别是面向过程编程和面向对象编程。

2.面向过程编程(Procedural Programming)

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。

def db_conn():
    print("connecting db...")

def db_backup(dbname):
    print("导出数据库...",dbname)
    print("将备份文件打包,移至相应目录...")

def db_backup_test():
    print("将备份文件导入测试库,看导入是否成功")

def main():
    db_conn()
    db_backup(‘my_db‘)
    db_backup_test()

if __name__ == ‘__main__‘:
    main()

3.面向对象编程

OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

面向对象的几个核心特性如下:

Class 类
一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法

Object 对象
一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同

Encapsulation 封装
在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法

1.类中封装了字段和方法;对象中封装了普通字段的值2.防止数据被随意修改3.使外部程序不需要关注对象内部构造,只需要通过对象对外提供的接口进行直接访问即可(方便被外部调用)

Inheritance 继承
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承

1.通过父类,子类的方式以最小代码量实现不同角色的共同点和不同点,同时存在

Polymorphism 多态
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。

1.接口重用2.从父类调用子类的方法

二、面向对象编程

1.创建类和对象

class是关键字,表示类;

创建对象,类名称后加括号即可;

类中第一个参数必须为self;

类中定义的函数(def)叫做方法;

class Person(object):   #创建class,Person为类名
    def __init__(self,name):    #构造函数,初始化方法
        self.Name = name

    def sayhi(self):    #类的方法
        print("my name is %s."%self.Name)

    def eat(self,food):
        print(‘%s eating %s‘%(self.Name,food))    #food属于eat类的私有属性

p = Person(‘lain‘)    #Person(p,‘lain‘) #实例化后产生的对象叫做实例
p1 = Person(‘zouliang‘)
p.sayhi()
p.eat(‘coco‘)

===================================================
Person(‘lain‘)    相当于Person(p,‘lain‘)
self 是一个形式参数,当执行 p = Person(‘lain‘) 时,self 等于p
                          当执行 p1 = Person(‘zouliang‘)时,self 等于p2

2.面向对象的特性

封装(Encapsulation)

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

  • 将内容封装到某处
  • 从某处调用被封装的内容
class Person(object): 

    def __init__(self,name,args):
        self.Name = name
        self.Args = args

    def sayhi(self):
        print("my name is %s. this year is %s "%(self.Name,self.Args))

    def eat(self,food):
        print(‘%s eating %s‘%(self.Name,food))

p = Person(‘lain‘,22)
p.sayhi()
==================================================
Person(‘lain‘,22)相当于将‘lain‘,22两个参数封装到p和salf实例中的name和args属性中

多态(Polymorphism)

继承(Inheritance)

时间: 2024-10-10 10:39:00

Python开发运维之路day7的相关文章

Python开发运维之路day1

一. python介绍相关 1. Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. - Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. - Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. - Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序. - Python 是面向对

Python开发运维之路day3

一.python字典操作 1.字典的定义 字典一种key-value的数据类型,类似于json串. 2.字典的特性 key:value 字典不可变,key唯一 key的定义规则: 1.不可变,数字.字符串.字典.元组(定义符合(),与列表完全一致,唯一不同的是元组内元素不可变) 2.key必须是唯一的,所以字典天生有去重功能 value的定义规则: 1.任意数据类型 3.字典的使用方法 字典的增.删.改.查 1 查询: 2 print(dic['name']) 3 print(dic.get('

Python开发运维之路day8

抽象类:    py2:导入abc函数,_metaclass__ = abc.ABCMeta;在强制调用类下:@abc.abstractmethod    py3:再强制调用类下添加raise  NotImplementedError 静态方法    @staticmethod 避免实例化开辟大量内存空间 既不能访问公有属性,也不能访问实例属性 类方法    @classmethod 类方法,只能访问类的公有属性,不能访问实例属性 属性方法    @property   作用是把一个方法变为一个

Python开发运维之路day2

一. python数据类型 python的五大基本数据类型,数字.字符串.列表.元组.字典;其他数据类型,类型type.Null.文件.集合.函数/方法.类.模块. 1.数字 1 ①整型 2 十进制转八进制 3 oct(10) 4 十进制转十六进制 5 hex(10) 6 ②长整型(目前python3里已经取消) 7 >>> type(2**31) 8 <type 'long'> 9 >>> type(2**30) 10 <type 'int'>

python自动化运维之路~DAY7

python自动化运维之路~DAY7 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.客户端/服务器架构 C/S 架构是一种典型的两层架构,其全称是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信. C/S 架构也可以看做是胖客户端架构.因为客户端需要实现绝大多数的业务

【Python自动化运维之路Day7】基础篇

今日目录: 模块 configparser xml shutil zipfile tarfile subprocess 面向对象(上) 一. 模块 上一期博客里列出了几个常用模块(os,hashlib,sys,re), 还有几个剩余的,这篇来继续往下走. 1. configparser模块 configparser模块是Python自带模块,主要用于处理特定的文件(ini文件),格式比较像MySQL的配置文件类型,就是文件中有多个section,每个section下面有多个配置项,如下: [my

Django开发运维后台(二):建立模型与更新数据

上一篇文章我已经新建了一个SaAdmin的APP,现在开始在这APP下面来code 1.修改setting.py的数据库连接: DATABASES = {     'default': {         'ENGINE':'django.db.backends.mysql',         'NAME': 'QjshAdmin',         'USER': 'root',         'PASSWORD': 'lihuipeng',         'HOST': 'localho

20款开发运维必备的顶级工具

开发运维工具与软件开发领域的最佳实践密切相关,也与必要的规范密切相关.在整个开发生命周期涉及到一大批新旧工具,从规划.编码.测试.发布到监控.本文介绍你应该考虑添加到工具箱中的20种开发运维工具,供大家参考. 开发运维是那些还没有得到明确定义,就流传开来的科技时髦词之一.这种情况时不时出现,某个好的概念问世后,人们还无法实际上解释它为何物,就趋之若鹜. 所以,考虑到开发运维本身在大家的头脑中还是一片模糊,开发运维工具怎么样呢? 有必要说清一点:开发运维是开发和运维的混合体,因为它代表了开发实践方

python自动化运维之路~DAY10

python自动化运维之路~DAY10 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.