【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. TortoiseSVN—Repo-browser

    TortoiseSVN—Repo-browser,打开你要比较的两个版本所在的地址,选择一个版本做为比较的基础(单击右键—选择mark for comparison),再选择另外一个版本(单击右键—选 ...

  2. MFC+OpenGL可编程管线

    [github链接] 网上的代码大都是固定管线渲染的,今天下午整理了下,把setPixelFormat.初始化glew.创建GL 4,2 context等操作封装到一个MFC类OpenGLWidget ...

  3. 硅谷最有名的帮派:如果你不知道PayPal黑帮

    paypal 你知道Tesla Motors,LinkedIn,SpaceX,Yelp,Yammer这几家公司的共同点吗?除了他们的市值都超过10亿美金之外,他们的创办人都是Paypal黑帮(Payp ...

  4. 纯css实现宽度自适应,高度与宽度成比例

    html: <div></div> css div{ width: 33.33%; box-sizing: border-box; float: left; position: ...

  5. 前端精选文摘:css之BFC 神奇背后的原理(转载)

    一.BFC是什么? 在解释 BFC 是什么之前,需要先介绍 Box.Formatting Context的概念. Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观点来说 ...

  6. Pyhton学习——Day60

    Form组件 - form表单(验证:保留上次内容) - - Ajax(验证:无需上次内容) - 返回HttpResponse - 前端:跳转或错误信息 1. Form组件扩展: 1.简单扩展 利用F ...

  7. webstorm注册码注册

    最近jetbrains公司更新软件总是特别的快,很多私人搭建的server服务也失效了,现出一个能够永久破解的方法,非常简单,只需要2步就完成. 第一步 复制下方activation code,直接粘 ...

  8. JavaScript push(),join() 函数

    定义和用法 push方法 可向数组的末尾添加一个或多个元素,并返回一个新的长度. join方法 用于把数组中所有元素添加到一个指定的字符串,元素是通过指定的分隔符进行分割的. 语法 arrayObje ...

  9. WinServer-服务器管理器-从入门到放弃

    WIN7 远程服务器管理工具 看看这篇帖子,他们说可以在WIN7上通过服务器管理工具来管理服务器上的软件 https://social.technet.microsoft.com/Forums/zh- ...

  10. 查看系统的I/O使用iostat命令而使用iotop能够依据I/O统计信息排序,追踪到详细的进程

    当看到I/O等待时间所占CPU时间的比重非常高的时候,首先要检查的就是机器是否正在大量使用交换空间,由于硬盘操作的速度远远低于RAM.所以当系统内存耗尽,開始使用交换空间的时候.系统的性能会受到严重影 ...