【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. 使用BigDecimal完成小数点后的精确位数的四舍五入

    package com.ryan; import java.math.BigDecimal; class MyMath { public static double round(double num ...

  2. SpringMVC视频

    视频内容: 1.下载spring mvc以及spring mvc示例演示http://pan.baidu.com/s/1kTHRfDH 2.配置完善&初步探究控制器拦截http://pan.b ...

  3. Caffe CommonLayer分析

    Caffe CommonLayer分析 \(Caffe\)中包含了很多通用的功能层,包含了\(concat\),\(slice\),\(split\),\(crop\),\(flip\),\(scal ...

  4. 路飞学城Python-Day33

    1.简述计算机操作系统中的“中断”的作用? 为什么有中断? 现代操作系统一般都是采用基于时间片的优先级调度算法,把CPU的时间划分为很细粒度的时间片,一个任务每次只能时间这么多的时间,时间到了就必须交 ...

  5. H5-移动端适配

    之前写H5页面也会遇到适配问题, 是通过媒体查询一点一点调整,始终觉得很繁琐,但一直也没去想想解决的办法. 今天专门花了一上午的时间来去研究.  小生只是刚踏入前端路的小白,对于网上各位大佬的讲解适配 ...

  6. hadoop 使用java操作hdfs

    1.创建目录 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.ha ...

  7. 查看系统进程:ps、top

    1.ps命令:提供最近进程的快照.显示当前活跃进程的简要信息. 常见使用: (1)与grep命令配合查找是否有相应进程存活 ps -ef | grep ksmd ps -Af | grep ksmd ...

  8. (转载)springboot集成httpinvoker的客户端

    原文:https://blog.csdn.net/geanwan/article/details/51505679 由于新项目采用了springboot,需要调用之前远程服务(之前项目用的spring ...

  9. tp volist需要便利两个数组时的处理办法

    你需要便利两个数组,并且需要使用key 和value的试的时候,volist是否先得有些捉鸡? 我们可以便利其中一个数组,而另一个利用数组的指针来操作 next($arr) 将数组指针下移 key($ ...

  10. jvm 虚拟机参数_方法区内存分配

    1.方法区( 永久区 ) 和堆一样,方法区是一块所有线程共享的区域,他用于保存系统类的信息.默认情况下 -XX:MaxPermSize 为 64m.如果系统运行时产生大量的类,就需要设置一个合适方法区 ...