python的这个特性是很特别的,与C#和C++都不一样。请看下面的例子

def outFun():
def innerFun_0():#1.在内部定义一个函数
print("i am first innerFun")
return def innerFun_1():#2.在内部定义另外一个函数
print("i am second innerFun")
return innerFun_0() #3.使用innerFun_0
innerFun_1() #4.使用innerFun_2 return outFun()#5.调用outFun函数

执行结果:

i am first innerFun
i am second innerFun

在outFun这个函数内部,定义了innerFun_0和innerFun_1,随后也使用了这两个函数。

其实完全可以吧这两个函数写在outFun的外面,如下,执行结果一样。

def innerFun_0():
print("i am first innerFun")
return def innerFun_1():
print("i am second innerFun")
return def outFun():
innerFun_0()
innerFun_1()
return outFun()#调用outFun函数

那么,问题来了,为啥python要搞这种方式呢,可能就是为了说明劳资怎么玩都可以,就是灵活

python函数嵌套定义的更多相关文章

  1. python笔记--3--函数、生成器、装饰器、函数嵌套定义、函数柯里化

    函数 函数定义语法: def 函数名([参数列表]): '''注释''' 函数体 函数形参不需要声明其类型,也不需要指定函数返回值类型 即使该函数不需要接收任何参数,也必须保留一对空的圆括号 括号后面 ...

  2. Python函数的定义、参数传入与函数的调用

    作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...

  3. 孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归

    孤荷凌寒自学python第十九天python函数嵌套与将函数作为返回对象及闭包与递归 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) Python函数非常的灵活,今天学习了python函数的以 ...

  4. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  5. Python--day12(三元表达式、函数对象、名称空间与作用域、函数嵌套定义)

    今日主要内容 1.  函数默认值细节(*) 2.  数据类型补充:三元表达式.列表推导式.字典推导式 (***) 3.  函数对象:函数名的各种应用场景 (*****) 4.  名称空间与作用域:解释 ...

  6. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  7. Python--day13(函数嵌套定义,global、nonlocal、闭包函数、装饰器)

    今日主要内容 1.  函数的嵌套定义 2.  global.nonlocal关键字 3.  闭包及闭包的应用场景 4. 装饰器 1.  函数的嵌套定义 概念:在一个函数的内部定义另一个函数 为什么要有 ...

  8. day13(函数嵌套定义,global,nonlocal关键字,闭包,装饰器)

    一,复习 ''' 1.函数对象:函数名 => 存放的是函数的内存地址 1)函数名 - 找到的是函数的内存地址 2)函数名() - 调用函数 => 函数的返回值 eg:fn()() => ...

  9. 函数嵌套定义,闭包及闭包的应用场景,装饰器,global.nonlocal关键字

    函数的嵌套定义 在一个函数的内部定义另一个函数 为什么要有函数的嵌套定义: 1)函数fn2想直接使用fn1函数的局部变量,可以将fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变凉了 2 ...

随机推荐

  1. 论坛短信息(JSP项目)

    if("list".equals(action)){ String username = request.getSession().getAttribute("login ...

  2. Rsync,Linux日志及Screen工具介绍

    第十六次课 Rsync,Linux日志及Screen工具介绍 目录 一.rsync工具介绍 二.rsync常用选项 三.rsync通过ssh同步 四. rsync通过服务同步 五.linux系统日志 ...

  3. converting the moment tensor to strie-dip-rake

    在多断层求解的试验中,用到了六个基本矩张量: 而显然,尚不能从图中直接读出strke,dip,rake的值,但有关资料给出了这六个基本矩张量的momet tensor: 而找到一个网站可以方便地将mo ...

  4. jmeter接口测试基础知识2.0

    如何在jmeter中上传文件:选择post方式后,选择FILES Upload--文件名称栏点击浏览,值栏写file,如果查看的时候报错,就在MIME类型中写TXT 参数化:添加学生信息:进行参数化1 ...

  5. LSTM学习—Long Short Term Memory networks

    原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...

  6. Python中异常处理

    高级语言通常都配置了一套try...except...finally的错误处理机制. 1.我们先看一个try的机制 try: res=1/0except ZeroDivisionError as e: ...

  7. java面向对象编程(五)--四大特征之抽象、封装

    1.抽象 我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版).这种研究问题的方法称为抽象. 2.封装 封装就是把抽象出来的数据和对数据的操作封装在一起 ...

  8. 关于idea的debug

    idea的debug真的是超级好用哎.分享几个今天学会的新方式: 1.右键会发现此选项 ,点击出现 在输入框中输入,可以通过某些公式单独计算. 2.点击属性值,右键点击set values 会出现一个 ...

  9. C#缓存流的使用浅析

    C#缓存流的使用实例:用缓存流复制文件,C#文件处理操作必须先导入命名空间: using System.IO; ///在按钮的Click事件中添加如下代码: private void button1_ ...

  10. VSCode 常用的快捷键

    R键:点击后热加载,直接查看预览结果 P键: 在虚拟机中显示网格,常用 O 键:切换iOS 和Android Q键 :退出调试 ctr +~  打开 终端