P82-递归函数-阶乘计算案例

#使用递归函数计算阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)result=factorial(5)print(result)#分行几何

P83-嵌套函数-内部函数-数据隐藏

嵌套函数:在函数内部定义的函数

分形几何

什么情况下使用嵌套函数?

  1. 封装-数据隐藏

    外部无法访问嵌套函数

  2. 贯彻DRY(Dont repeat yourself)的原则

    嵌套函数,可以让我们在函数的内部避免重复的代码

  3. 闭包

    后面会详细讲解

#测试嵌套函数的定义def outer():    print("outer running")def inner01():        print("inner 01 running")    inner01()outer()def printChineseName(name,familyName):    print("{0}  {1}".format(familyName,name))def printEnglishName(name,familyName):    print("{0}  {1}".format(name,familyName))def printName(isChinese,familyName):def inner_print(a,b):        print("{0}   {1}".format(a,b))if isChinese:        inner_print(familyName,name)else:        inner_print(name,familyName)printName(True,"小七","高")printName(False,"Ivana","Trump")

P84-nonlocal_global

nonlocal关键字

nonlocal

用来声明外层的局部变量

global

用来声明全局变量

【操作】使用nonlocal声明外层的局部变量

#测试nonlocal,global关键字的用法def outer():    b=10def inner():nonlocal b #声明外部函数的局部变量        print("innner",b)#b=20直接b=20就会报错,必须要先声明一下    inner()    print("outer b:",b)outer()print("a:",a)

P85 LEGB规则

Enclosed指的是嵌套函数,一个函数包裹另一个函数,闭包

如果某一个name映射在局部(local)命名的空间当中没有找打,接下来就会在闭包作用域(enclosed)进行搜索,如果闭包作用域也没有找到,Python就会找到全局(global)命名空间当中进行查找,最后会在内建(built-in)命名空间当中进行搜索(如果一个名称在所有的命名空间当中都没有找到,就会产生一个NameError)

#测试LEGBprint(str(30))print(type(str))#str="global str"def outer():#str="outer"def inner():#str="inner"        print(str)pass    inner()outer()

P86面向对象和面向过程的区别-执行者的思维

第六章 面向对象的编程

面向对象(Object oriented Programming,OOP)编程的思想主要是针对大型的软件设计而来的,面向对象的编程使程序的扩展性更强,可读性更好,使得编程可以像搭积木一样的简单,面向对象将数据和操作数据的相关的方法封装到对象当中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率

Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承,多态,封装等

Python当中,一切皆对象,我们在前面学习的是数据类型,函数等,都是对象

注意:Python支持面向过程,面向对象,函数式编程等多种编程范式

面向对象和面向过程的区别

面向过程(Procedure Oriented)思维

面向过程编程更加关注的是程序的逻辑流程,是一种执行者的思维,适合编写小规模的程序,

面向过程思想思考问题的时候,我们首先思考“怎么按照步骤实现”,并将步骤对影成方法,一步一步,最终完成,这个时候简单的任务,不需要过多的协作的情况下,比如:如何开车?我们很容易就列出了时间的步骤

  1. 发动车2,挂挡3踩油门4走你

    面向过程适合简单,不需要协作的事务,但是当我们思考比较复杂的问题的时候,比如:“如何造车?”就会列出1234这样的步骤,这是不可能的,那是因为造车太复杂,需要很多的协作才能够完成,此时面向对象的思想就营运而生了。

面向对象(object oriented)思维

面向对象更加关注的是软件当中对象之间的关系,是一种设计者思维,适合编写大规模的程序。

欢迎打赏,么么哒!

●R语言

●句子

●JAVA

●C语言以及算法笔记

●大学生生活图鉴

●JavaScript

●计算机网络原理

●计算机组成原理

●操作系统

●数据库系统概论

●数据结构

●英语

●Linux

●数字图像处理

●云计算与人工智能

●资源

●明星电视剧社会现象娱乐

Python

仙女都在看点点点,赞和在看都在这儿!

python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...相关推荐

  1. python释放变量内存_Python尚学堂高淇|1113引用的本质栈内存,堆内存,内存的示意图,标识符,变量的声明初始化,垃圾回收机制...

    011-引用的本质-栈内存和堆内存-内存的示意图在Python当中,变量也成为:对象的引用,因为,变量的存储就是对象的地址变量通过地址引用了对象变量位于堆内存(压栈,出栈等细节,后续再介绍)对象位于: ...

  2. python expect模块_Python尚学堂高淇|第二季0408P119P123with上常见的异常的解决tryexcept...else结构,...

    P119  04:try ...except...else结构 try..except...else结构增加了"else快"如果try快当中没有抛出异常,则执行else快,如果tr ...

  3. vb.net 同时给多个属性赋值_Python尚学堂高淇|1721时间表示unix时间点毫秒微秒time模块浮点数自动转换强制转换增强赋值运算符...

    017浮点数-自动转换-强制转换-增强赋值运算符浮点数称为float用a*b^10形式表示的科学计数法,比如:3.14,314E-2或者314e-2这些数字在内存当中也是按照科学计数法存储. > ...

  4. continue语句只用于循环语句中_Python尚学堂高淇|P60P63break语句,else语句使用,循环代码的优化...

    P60 -break语句 break语句用于while和for循环用来结束整个循环,当有嵌套循环的时候,brea语句只能够跳出最近一层的循环 continue语句用于结束本次循环,继续下一次的,多个循 ...

  5. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...

    面向对象编程 面向对象(OPP)编程思想主要针对大型软件设计而来的.面向对象编程使程序的扩展性更加强,可读性更好.使得编程可以像搭积木一样简单. 面向对象编程将数据和操作数据的方法封装到对象中,组织代 ...

  6. 【133天】尚学堂高淇Java300集视频精华笔记(71-72)

    第71集:常用类/file类/打印目录树状结构/递归算法 课堂代码 package com.test071;import java.io.File;public class Test071 {publ ...

  7. 【138天】尚学堂高淇Java300集视频精华笔记(84)

    第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...

  8. 【135天】尚学堂高淇Java300集视频精华笔记(74-76)

    第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...

  9. 【131天】尚学堂高淇Java300集视频精华笔记(65-66)

    第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...

最新文章

  1. 关于“System.Data.ProviderIncompatibleException”类型的异常
  2. docker Cannot start container [8] System error: exec format error
  3. Cookie的生命周期问题
  4. mysql数据加百分号_使用MySQL SELECT语句时,在每个值的末尾添加一个百分号(%)...
  5. C 实现一个跨平台的定时器 论述
  6. addressof表达式不能转换为long_2.3 C++赋值运算符与表达式 | 将有符号数据赋给无符号...
  7. 3D slicer的教程网站
  8. ssh - 安全外壳协议的详解,为什么使用它
  9. 计算机组成原理完整学习笔记(四):输入输出系统
  10. xml文件查看器_万能文件查看器,一个软件打开电脑所有文件
  11. Linux驱动之定时器(mod_timer)
  12. 人人都喜欢用的十大python标准库
  13. HFSS对称阵子仿真(2)
  14. 禁用/开启 Windows系统3D加速
  15. ubuntu下公式编辑器EqualX的安装和使用
  16. 如何看待并夕夕公司离职员工在脉脉上疯狂吐槽前公司?
  17. Q: 'BMap' is not defined?BMap初始化报错爆红
  18. 使用ssh上传文件到服务器
  19. Markdown 数学公式大帅了
  20. 用HBuilderX开发小程序的一些问题

热门文章

  1. MyBatis 集成到Spring 的原理是什么?
  2. 工厂Bean 的实现类getObject 方法创建Bean 实例对象
  3. AnnotationConfigApplicationContext 通过调用注解Bean 定义读取器
  4. 引导类、扩展类、系统类加载器的使用及演示
  5. spring项目搭建-注册对象到容器测试
  6. 接口隔离原则原理讲解-coding
  7. win7电脑总是提示重新启动计算机以完成重要更新的安装是怎么回事,Win7开机时弹出Windows Update提示,怎样解决?(图文)...
  8. 从构建分布式秒杀系统聊聊WebSocket推送通知
  9. redhat 安装Rabbitmq
  10. 通过OWA修改密码,提示输入的密码不符合最低安全要求