关于嵌套:

嵌套使用中,  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 innerret = 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 innerdef 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 innerdef show(name):print("name is given when ==>>show starts",name)print(name)outer(show)(name)

转载于:https://www.cnblogs.com/jyfootprint/p/9409912.html

python函数使用易错举例相关推荐

  1. python函数使用易错点_Python易错例题

    为了更好检测效果,请在作答时最好不要复制代码去执行 第一题(实践) 请使用zip函数将已给dict的key和value倒置 原dict: {'name':'老王','age':'48','man or ...

  2. python函数使用易错点_大部分人都会忽略的Python易错点总结

    python中复数实现(-2) ** 0.5和开根号sqrt(-2)的区别 (-2)**0.5和sqrt(-2)是不同的,前者是复数后者是会报错的. print((-2)**0.5) #输出:(8.6 ...

  3. python 函数嵌套 报错_《Python》 函数嵌套、闭包和迭代器

    一.函数的嵌套: 1.函数的嵌套调用 defmax2(x,y): m= x if x>y elseyreturnmdefmax4(a,b,c,d): res1=max2(a,b) res2=ma ...

  4. c语言 void swap,C语言的swap函数的易错点

    程序一:交换值 #include void swap(int *x , int *y){ int *temp; temp = x; x = y; y = temp; } void main(){ in ...

  5. 类模板 重载运算符 易错

    在类模板中定义重载运算符模板函数,易错地方如下 例 错误(1) #include <iostream> using namespace std; template <typename ...

  6. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...

    原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...

  7. 北理 嵩天老师 Python程序设计 课后作业易错题总结

    Python程序设计课后作业易错题总结 最近小c君在学习北理的嵩天老师在中国大学MOOC上发布的,<Python程序设计>课程. 下面是我总结该课程课后作业的易错题,分享给大家.同时非常推 ...

  8. python函数第二次运行报错_Python学习笔记2-函数、高级特性

    函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...

  9. python 判断点在随机多边形内_初中数学必须掌握的28个考点及60个易错点,收藏起来慢慢看!...

    中学大课堂初中各科学习必备(海量学习资源)关注 来源:初中生学习(ID:czsxuexige) 初中的学习不同于小学,在初中数学学习中,由于数学知识点难度的提升,更为看中的是孩子们的数学逻辑思维能力, ...

最新文章

  1. centos7 更新firefox版本
  2. libc.so.6(GLIBC_2.14)(64bit) is needed by...问题的解决办法
  3. python 什么是上下文管理器(ContextManager)?
  4. Python 计算机视觉(二) —— OpenCV 基础
  5. 【推荐系统】基于物品的协同过滤算法
  6. CSS里:focus-within 的作用和用法
  7. PowerDesigner的使用二
  8. 深入了解Struts2返回JSON数据的原理及具体应用范例
  9. 为什么unity 安装完模块还是找不到sdk_Unity填坑笔记(四)——移植UWP平台
  10. Exceeded maximum number of retries. Exceeded max scheduling attempts 3 for instance
  11. windows做ntp server,linux做ntp client端的配置方法
  12. 腾讯游戏规范直播:以后将严禁这些行为!
  13. 利用jsonp实现跨域请求
  14. js 弹出提示信息,并跳转指定页面代码分享
  15. 三星s9Android9内测申请链接,国行三星S9/S9+开启安卓9.0内测
  16. 巧用讯飞TTS进行文本合成语音(LINUX操作系统)
  17. 装饰工程预算软件测试自学,学预算要多久能学出来 预算没人带怎么自学
  18. 如何注册PayPal账户
  19. VVIC搜款网平台API接口
  20. 基于Citrix的云桌面远程连接Mac机

热门文章

  1. java form 上传文件_java通过表单进行文件上传的几种方法
  2. c cuda 指定gpu_GPU并行编程:熟练使用CUDA C语言
  3. android调用so封装jni,GitHub - Michelle0716/AndroidJniDemo1: 安卓对c进行so文件打包,并以jni的形式进行调用...
  4. 登录id 黑苹果_黑苹果MacOSCatalina无法登录AppStore修复
  5. 10位IT领袖给应届毕业生的10条忠告
  6. leetcode 322. 零钱兑换 思考分析
  7. 数据库系统数据库管理系统_数据库管理系统介绍
  8. 学java要学vue吗_学vue之前必看
  9. 【计算机网络】TCP IP通信处理过程
  10. yii html 添加下拉框,php – Yii2下拉列表:在我的选项中添加像data-food =“…”这样的html标记...