关于嵌套:

嵌套使用中,  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. 快速求1~n的k!,k的逆元

    1.求1~n的k! 2.求inv(k!) 3.inv((k-1)!)=inv(k!)*k%mod 4.inv(k)=inv(k!)*((k-1)!)%mod 如 https://www.cnblogs ...

  2. webpack 配置es6 语法

    使用babel来编译es6的语法; 1.在终端上输入指令 npm install webpack babel-loader babel-core babel-preset-es2015 --save- ...

  3. Typora使用入门

    使用sublime编写markdown语法不太方便,使用专门的markdown编辑软件会更方便一些! 1.typora常用快捷键 ctrl + /     切换编辑语法模式/预览模式 ctrl + 1 ...

  4. JavaWeb学习篇之----Servlet过滤器Filter和监听器

    首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: ************************************************************** ...

  5. NX二次开发-UFUN选择草图对话框UF_UI_select_sketch

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //选择草图对话框 char sMessage[] = "选择 ...

  6. 构建高性能高并发Java系统 .

    转:http://blog.csdn.net/nengyu/article/details/7591854 场景这里指的高性能高并发服务器是一个有状态的服务,可以理解成web或者socket服务器,每 ...

  7. 查看framework版本

    cd %WINDIR%\Microsoft.NET\Framework\v4.0.30319 MSBuild /version

  8. Codeforces 1174C Ehab and a Special Coloring Problem

    题目链接:http://codeforces.com/problemset/problem/1174/C 题意:给你一个n,要你填充 下标由2 ~ n 的数组ai,要求下标互质的俩个数不能相等,并且数 ...

  9. Python 文件处理一

    1.路径下所有文件(不包含子文件) import os dirs = os.listdir(path) 注:dirs 是一个list 2.遍历路径下所有文件 def file_name(file_di ...

  10. Day15:Python 【模块】及__name__:

    什么是模块: 在Python中,随着这代码的撰写,代码越来越长,所以产生了,模块这个概念,模块是什么?模块就是一个.py文件,在撰写代码时,我们把不同的功能的代码封装到一个.py文件里,用得时候导入 ...