关于嵌套:

嵌套使用中,  retrun inner  ---> 返回的是函数的地址

retrun inner() :    --->  运行inner()函数   ---> 运行inner()函数后的返回值a(假设)返回上级  -->       retrun inner()得到返回值a

如果函数没有指定返回值,那么默认的返回值就是 None

举例1:

name = "老师"

def outer():
name = "小屁孩"
def inner():
print(name)
return inner() ret = outer()
print(ret) #

运行结果:

举例2(易错,与举例1对比):

这里要注意的是,inner是属于  outer内部的函数,因此,“ 即使单独运行 ”  inner内部的函数,其内部的参数没有定义的话,也会先去从它的上级函数找,这里inner的上级函数就是  outer

name = "老师"
def outer():
name = "小屁孩"
def inner():
print(name)
return inner ret = outer()
ret() # 相当于运在outer当中运行了inner
print("ret = outer(): ",ret)
result = ret()
print("result = ret(): ",result) # 相当于运在outer当中运行了inner,并且要了inner的返回值

参考文献: 

python基础-基础知识考试_day5 (包括:函数_递归等知识) - 努力哥 - 博客园

https://www.cnblogs.com/nulige/p/6128674.html,第30题


举例3:

这里需要注意的是,形参func存放的是外部全局定义的函数show的地址。

outer(show)()运行过程: a = outer(show)  -->   a()

name = "老师"

def outer(func):
print("outer!!")
def inner():
name = "李杰"
func()
return inner def show():
print("show!!")
print(name) outer(show)()

运行结果:

举例4(与举例3区别):


name = "老师" def outer(func):
print("name is given when ==>>func starts",name)
def inner(name):
print("name is given when ==>>inner starts",name)
name = "李杰"
func(name)
return inner def show(name):
print("name is given when ==>>show starts",name)
print(name) outer(show)(name)

python函数使用易错举例的更多相关文章

  1. Python程序设计 测验易错题总结

    1.温度转换 t=input() if t[-1]=="J": t=int(t[:-1]) t1=t/4.186 print("%.3fcal"%t1) els ...

  2. 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项

    博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...

  3. python易错知识集合

    本篇用于记录在写leetcode时遇到的python易错知识. 2019.8.29 1.Python range() 函数用法: range(start, stop[, step]) start: 计 ...

  4. python 函数、参数及参数解构

    函数 数学定义 y=f(x), y是x函数,x是自变量.y=f(x0,x1...xn) Python函数 由若干语句组成的语句块,函数名称,参数列表构成,它是组织代码的最小单位 完成一定的功能 函数作 ...

  5. python学习【第四篇】python函数 (一)

    一.函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以 ...

  6. python函数基础-参数-返回值-注释-01

    什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...

  7. Python 函数返回值、作用域

    函数返回值 多条return语句: def guess(x): if x > 3: return "> 3" else: return "<= 3&qu ...

  8. Java构造方法的姿势与易错点

    <Java基础复习>-类与对象&初始化 关于类和对象的基本理念,就不再赘述(如果你学习过还忘了,就是一种特殊的本领了),没有学习过的可以去搜索一下OOP或者类和对象,百科的知识就已 ...

  9. 一文搞懂Python函数(匿名函数、嵌套函数、闭包、装饰器)!

    Python函数定义.匿名函数.嵌套函数.闭包.装饰器 目录 Python函数定义.匿名函数.嵌套函数.闭包.装饰器 函数核心理解 1. 函数定义 2. 嵌套函数 2.1 作用 2.2 函数变量作用域 ...

随机推荐

  1. Linux常用命令大全(很全面)

    最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大.我将我了解到的命令列举一 ...

  2. nodejs 模板引擎ejs的简单使用(2)

    test.ejs <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  3. net core发邮件——MimeKit

    var message = new MimeMessage(); message.From.Add(new MailboxAddress("谁发的", "发送方的邮件地址 ...

  4. C/C++ 智能指针

    // 转载自 :https://www.cnblogs.com/wuyepeng/p/9741241.html { 为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new ...

  5. 后缀自动机求多串LCS——spojlcs2

    /* 每个状态存最长匹配长度,然后多个串匹配过程中取最小的最长匹配长度 和LCS1不同的地方:LCS只要维护住当前匹配长度和最长匹配长度即可,但是多串匹配需要维护的是每个状态结点(即后缀树上)的信息 ...

  6. Delphi中关于菜单的几个技巧

    -- 1将菜单项移到菜单栏的最右边 在一些应用程序中,常把一些特殊的菜单项放在菜单栏的最右边(如WPS2000 中的"定制界面"菜单,一些应用程序的帮助菜单),这些菜单项放在菜单栏 ...

  7. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

  8. NX二次开发-UFUN关闭STL文件函数UF_STD_close_stl_file

    NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...

  9. NX二次开发-UFUN设置透明度UF_OBJ_set_translucency

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize( ...

  10. NX二次开发-UFUN工程图表格注释获取某一行的tag函数UF_TABNOT_ask_nth_row

    NX9+VS2012 #include <uf.h> #include <uf_tabnot.h> #include <NXOpen/Part.hxx> #incl ...