【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. CoordinatorLayout:android之ScrollingActivity

    1.效果图 2.新建SrcollingActivity后生成代码为: <?xml version="1.0" encoding="utf-8"?> ...

  2. golang下使用ini配置文件(widuu/goini)

    在“widuu/goini”基础上进行了修改,增加了其他数据类型配置值(string.int.int32.int64.[]int.[]string)的支持. 使用方法: ConfigCentor := ...

  3. 使用其他Java工程导入hadoop源码用于在hadoop工程中查看源码

    疑问:在开发hadoop程序的时候,有时候需要查看hadoop的源码,但是开发环境看不到,甚是烦恼,经过网上搜索和琢磨,终于实现了,虽然有点绕,但是目的达到了. 第一步:下载hadoop的源码包:ha ...

  4. Codeforces Round #470 (rated, Div. 2, based on VK Cup 2018 Round 1)A. Protect Sheep

    http://codeforces.com/contest/948/problem/A   A. Protect Sheep Bob is a farmer. He has a large pastu ...

  5. PHP的soap 之 nusoap 的使用

    今天不知道为什么想起了soap 这个东西,然后就弄了下,在php上使用的是nusoap. 一些基本的使用,高深的麻烦您自己看手册去 这个软件的下载在http://sourceforge.net/pro ...

  6. POJ 3122 Pie( 二分搜索 )

    链接:传送门 题意:一个小朋友开生日派对邀请了 F 个朋友,排队上有 N 个 底面半径为 ri ,高度为 1 的派,这 F 个朋友非常不友好,非得"平分"这些派,每个人都不想拿到若 ...

  7. SUSE Linux Enterprise 11 SP4系统安装过程 字符界面

    首先开启虚拟机之后显示这个界面: (1) 进入之后显示下面界面,点击Installation安装. (2)进入Welcome界面,选择语言,默认Einglish(US)不需要改动:点击I Agree ...

  8. ES学习——分析器和自定义分析器

    简介 es在对文档进行倒排索引的需要用分析器(Analyzer)对文档进行分析.建立索引.从文档中提取词元(Token)的算法称为分词器(Tokenizer),在分词前预处理的算法称为字符过滤器(Ch ...

  9. powerDesigner如何动态显示mysql数据库表结构

    原文链接:http://jingyan.baidu.com/article/e5c39bf5d64efa39d760333c.html 有时候,由于数据库中的表太多,主外键关系复杂,对数据库的非设计人 ...

  10. Android自己定义矩形及selector、shape的使用

    [声明]转载请注明出处.此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail --每天写一篇博客.每天做一点技术积累! Android自己定义矩形及selector ...