【1.编程范式】
1.面向过程编程
2.面向对象编程

【2.面向过程编程】
面向过程:核心就是过程  
什么是过程?
过程指的是解决问题的步骤,先做什么,在作什么,面向过程就像是设计一个流水线,是一种机械式的思维方式,这种思维方式的基本思想就是把一个大的问题不断细化为各种子问题,然后不断细化,知道细化到能够在很小的范围里编写,然后逐个击破
面向过程的优缺点?
优点:复杂的问题分解为一步步小问题,复杂问题流程化进而简单化
缺点: 对于写程序,需要扩展代码,对于面向过程就需要不断修改,可扩展性不强,修改某一个功能,其他的功能都要去查,牵一发而动全身
设计一个用户登录界面
def login():
'''
用户输入账号密码
:return:
'''
username = input('>>>').strip()
pwd = input('>>>').strip()
return {
"username": username,
"pwd": pwd
}
 
def check(user_info):
'''
检查用户输入合法性
:return:
'''
is_valid = True
if len(user_info['username']) == 0:
print('用户名不能为空')
is_valid = False
if len(user_info['pwd'])<6:
print('密码不能少于6位')
is_valid = False
return {
'is_valid': is_valid,
'user_info': user_info
}
 
def register(check_info):
'''
完成注册
:return:
'''
if check_info['is_valid']:
import json
with open('db.json','w',encoding='utf-8') as f:
json.dump(check_info['user_info'],f)
 
def main():
'''
主函数代码块
:return:
'''
user_info = login()
check_info = check(user_info)
register(check_info)
 
if __name__ == '__main__':
main()

用户登录界面增加需求

def login():#增加需求需要逐行检查
'''
用户输入账号密码
:return:
'''
username = input('>>>').strip()
pwd = input('>>>').strip()
email = input('>>>').strip()
return {
"username": username,
"pwd": pwd,
"email": email,
}
 
def check(user_info):
'''
检查用户输入合法性
:return:
'''
is_valid = True
if len(user_info['username']) == 0:
print('用户名不能为空')
is_valid = False
if len(user_info['pwd'])<6:
print('密码不能少于6位')
is_valid = False
import re
if not re.search(r'@.*?\.com$',user_info['email']):
print('邮箱格式不合法')
is_valid =False
return {
'is_valid': is_valid,
'user_info': user_info
}
 
def register(check_info):
'''
完成注册
:return:
'''
if check_info['is_valid']:
import json
with open('db.json','w',encoding='utf-8') as f:
json.dump(check_info['user_info'],f)
 
def main():
'''
主函数代码块
:return:
'''
user_info = login()
check_info = check(user_info)
register(check_info)
 
if __name__ == '__main__':
main()
 

【3.面向对象编程】
面向对象:核心就是对象,理解对象必须站在上帝的视角,任何事物都视为对象
什么是对象?
对象就是特征与技能的组合
总结:面向过程就是设计流水线,面向对象就是设计角色和角色的特征和技能
面向对象的优点和缺点
优点:可扩展性强,面向对象只能解决扩展性,但是软件开发里可扩展性只是一部分,掌握面向对象是开发的一部分
缺点:简单的问题会变的复杂化,编程的复杂度高,容易出现设计的问题
应用场景:用户需求经常变化的场景,互联网应用、游戏、企业内部的应用(办公系统)等经常发生需求变更的场景
 

【4.定义类与实例化对象】

【5.如何使用类】

【6.如何使用对象】

【7.属性查找与绑定方法】

【8.一切皆对象】

【9.面向对象可扩展性总结】

【10.小练习1】

【11.小练习2】

【12.继承与重用性】

【13.派生】

【14.继承的实现原理】

【15.在子类中重用父类的方法和属性】

【16.组合】

【17.抽象类与归一化】

【18.多态与多态性】

【19.封装之如何隐藏属性】

【20.封装的意义】

【21.封装与可扩展性】

【22.property的使用】

【23.绑定方法与非绑定方法介绍】

【24.绑定方法与非绑定方法】

【25.反射】

【26.内置方法介绍】

【27.元类介绍】

【28.自定义元类控制类的创建】

【29.自定义元类控制类的实例化行为】

【30.自定义元类控制类的实例化行为的应用】

【31.面向对象的软件开发与作业介绍】

【32.什么是异常处理】

【32.try...except...详细方法】

 

路飞学城Python-Day17的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. GRpc-Proto3语法

        syntax = "proto3"; 文件的第一行指定了你使用的是proto3的语法:如果你不指定,protocol buffer 编译器就会认为你使用的是proto2的语 ...

  2. hdu 5372 Segment Game 【 树状数组 】

    给出一些操作, 0是将第i次增加的线段放在b位置,第i次放的线段的长度为i 1是将第b次增加操作放的线段删除 每次增加操作完之后,询问这条线段上面的完整的线段的条数 每次询问统计比这条线段左端点大的线 ...

  3. Git的选项参数

    git的选项参数 MisSa@DESKTOP-PIQ06QO MINGW64 ~ $ git usage: git [--version] [--help] [-C <path>] [-c ...

  4. kernel zram feature

    what is zram? Zram wiki zram zram(也称为 zRAM,先前称为 compcache)是 Linux 内核的一项功能,可提供虚拟内存压缩.zram 通过在 RAM 内的压 ...

  5. [NOIP2012提高组]开车旅行

    题目:洛谷P1081.Vijos P1780.codevs1199. 题目大意:有n座海拔高度不相同的城市(编号1~n),两城市的距离就是两城市海拔之差.规定每次只能从编号小的城市走到编号大的城市. ...

  6. Python3的URL编码解码

    前言 博主最近在用python3练习一些爬虫脚本的时候,发现一些url的编码问题,在浏览器提交请求api时,如果url中包含汉子,就会被自动编码掉.呈现的结果是 ==> %xx%xx%xx.如果 ...

  7. centos7下搭建solr服务器

    1.Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 1.2. 搭建步骤 第一步:把solr 的压缩包上传到Linux系统 第二步:解压solr ...

  8. 在join中,on和where的区别

    两个表在,join时,首先做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤. 在使用left  j ...

  9. IOS系统兼容input keyup事件

    最近在做移动端模糊搜索功能,js监听input的keyup事件,在chrom模拟器和android手机环境运行都没有问题,到了ios手机却出现bug,没法实现功能: 查了好一会资料,发现keyup事件 ...

  10. 【codeforces 749D】Leaving Auction

    [题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...