Python概览

本文介绍了Python中的高阶函数如map、reduce和filter,以及面向对象编程的面向过程和封装/继承的概念。通过烹饪比喻阐述了两者在教学和编程中的应用。同时讨论了模块和包在Python中的组织结构。
摘要由CSDN通过智能技术生成

元组()和列表 [] 前面用*表示????(没看懂适用场景)

常用的高阶函数

高阶函数就是以函数(常用匿名函数lambda)作为参数的函数
reduce是完成次序迭代,减少了参与计算的因式个数

# 1,map将一个函数作用到一个序列或者多个序列配对
#map英文单词原意:映射

list(map(lambda x:x**2,[1,2,3,4]))


list(map(lambda x,y:x+y,'abc','123'))



### 2,reduce 将一个带有两个参数的函数依次迭代作用到一个序列
#reduce英文单词原意:减少
#reduce(f,[a,b,c,d]) = f(f(f(a,b),c),d)

from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4])


### 3,filter 根据规则过滤序列中的元素
#filter英文单词愿意:过滤

list(filter(lambda x:x>0,[-1,-2,1,2]))

面向对象与面向过程

面向过程–就是不断的定义函数,函数依次执行
面向对象(便于使用、拓展)–需要创建类(数据、代码的封装),类是更抽象、基础的函数

我的理解,以学做菜为例,面向过程的教学就是按选材、刀工、火候等教学(一个学校的成熟系统课程);面向对象的教学就是按食谱教学(类里有原材料、有工具,任意一个单元学完都能做出一个独立又完整的菜),两者是对厨师进行训练的不同教学形式,各有千秋。因此,面向对象的教学是更适合迁移,也更容易被人接受理解,激发兴趣继续学习,是提供各取所需的按键。我认为面向过程其实更有底蕴和挑战性,是对细节的提高。面向过程和面向对象相辅相成,面向对象降低了入门门槛更灵活,面向过程的理解能帮助面向对象的提高。

self表示对象本身(相当于英语写作里的it指示代词)传参的时候不需要传
私有方法和私有属性都不能之间调用——外部不能访问,但内部(定义的时候)可以访问

对象(具体,也叫基类)是类(抽象,对象的共同点)的实例
“万物皆对象”

封装与继承

我的理解:封装就是构造类(数据+代码)——创造魔法;继承就是教对象使用已有的东西——使用魔法。
在这里插入图片描述
类里面的私有函数一定是双下划线开头(但模块中定不在类中时,私有函数可以不是双下划线开头)
在这里插入图片描述

对象属性自己有属性的时候优先调用自己的(不会因此改变类属性),没有的话会调用类属性
下面的两个实现效果一样:
在这里插入图片描述
函数的内部实现是因为调用了定制方法
在这里插入图片描述

模块与包

一个.py文件就是一个模块——相当于一道菜/一个按钮
几个模块之间相互关联,形成的一个模块——相当于一桌菜/几个按钮
包是一个特殊的模块,里面有__init__.py。

当作为import引入时,不执行(因为name此时指所引入的模块名)
在这里插入图片描述
作为脚本,就会执行test
在这里插入图片描述
包示范
在这里插入图片描述
这3个Animal分别指包名、子模块名、类名
在这里插入图片描述
两个Dog含义不同:从子模块导入类,实现创建对象snoopy的目的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值