从函数中返回函数

其实并不需要在一个函数里去执行另一个函数,我们也可以将其作为输出返回出来:

def hi(name="yasoob"):def greet():return "now you are in the greet() function"def welcome():return "now you are in the welcome() function"if name == "yasoob":return greetelse:return welcomea = hi()
print(a)
#outputs: <function greet at 0x7f2143c01500>#上面清晰地展示了`a`现在指向到hi()函数中的greet()函数
#现在试试这个print(a())
#outputs: now you are in the greet() function

再次看看这个代码。if/else语句中我们返回greetwelcome,而不是greet()welcome()。为什么那样?这是因为当你把一对小括号放在后面,这个函数就会执行;然而如果你不放括号在它后面,那它可以被到处传递,并且可以赋值给别的变量而不去执行它。

你明白了吗?让我再稍微多解释点细节。

当我们写下a = hi()hi()会被执行,而由于name参数默认是yasoob,所以函数greet被返回了。如果我们把语句改为a = hi(name = "ali"),那么welcome函数将被返回。我们还可以打印出hi()(),这会输出now you are in the greet() function

python 从函数中返回函数相关推荐

  1. Python 函数式编程,Python中内置的高阶函数:map()、reduce()、filter()与sorted(),Python中返回函数

    函数式编程 是一种编程范式,比函数更高层次的抽象. 函数式编程将计算视为函数而非指令. 纯函数式编程:不需要变量,没有副作用,测试简单. 支持高阶函数,代码简洁. Python 支持的函数式编程 不是 ...

  2. Python使用numpy中trim_zeros函数去除首尾0值的语法

    Python使用numpy中trim_zeros函数去除首尾0值的语法 目录 Python使用numpy中trim_zeros函数去除首尾0值的语法 #numpy中trim_zeros

  3. Python class 类中 __init__ 函数

    什么是类? 类 是通过执行类语句创建的特定对象类型.类对象 被当作模板来创建实例对象,实例对象包含了特定于数据类型的数据(属性)和代码(方法). 类可以基于一个或多个的其他类,称之为基类(ES),它继 ...

  4. bash shell函数中返回任意值的四种方法

    From: http://www.jbxue.com/article/11322.html 本文介绍下,在bash shell编程中,从函数中返回任意值的几种方法,有需要的朋友参考下. 在bash中, ...

  5. 《C++面向对象高效编程(第2版)》——3.16 从函数中返回引用

    本节书摘来自异步社区出版社<C++面向对象高效编程(第2版)>一书中的第3章,第3.16节,作者: [美]Kayshav Dattatri,更多章节内容可以访问云栖社区"异步社区 ...

  6. [转载] python 列表List中index函数的坑

    参考链接: Python列表list sort() python 列表List中index函数的坑 例如 a = [1, 2, 1] 如果使用 a.index(1), 输出的只是列表中第一个出现的 1 ...

  7. C函数中返回字符数组

    原文 C函数中返回字符数组,CSDN同步发布. 转载请注明出处,谢谢! 强力推荐-不要错过,万一能帮助到自己呢? 朋友做了一个关于 人工智能的教程,教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小 ...

  8. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  9. python在另一个函数中使用其他函数的变量_在另一个函数中访问函数的变量,如function() . var in python...

    我在寻找一种正确的方法来访问另一个函数中的函数变量时遇到了一些问题 . 我正在制作远程操作类工具,因此我需要处理接收的命令[如'exit'或'nircmdc.exe'或'telnet'等] . 下面的 ...

最新文章

  1. Vim 常用命令总结
  2. 2017年云计算的6大趋势
  3. 常用的一些注入命令,方便一下大家哦
  4. 盘点中国互联网行业10年2万多起投融资,17年投融资形势走向何处
  5. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料
  6. ArcGIS 10.5河流水系左斜体样式经典设置方法
  7. SqlServer的日常生活
  8. web之Attribute
  9. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
  10. matlab求差分方程的单位响应,实验一:线性卷积和求差分方程的单位样值响应
  11. 点分十进制转32位二进制数组
  12. 开源一款资源分享与下载工具 —— 电驴(eMule)
  13. 电脑桌面便签怎么编辑修改便签内容?
  14. VMware 8安装Mac OS X 10.7
  15. 网站301转向代码大全
  16. Pr:导出设置之编码设置
  17. 升级IOS10 出现的兼容性的问题
  18. 学习进度总结————王烁130201218
  19. aix安装bff_AIX程序打包
  20. 快捷给UE4项目改名

热门文章

  1. Android-8.0应用夜间模式在旋转屏幕等操作后导致的日夜间模式切换混乱问题
  2. deepin(深度)系统字体文件位置
  3. FPGA基础知识|芯片设计基础知识
  4. 2020华南理工计算机考研分数线,2021华南理工大学研究生分数线一览表(含2019-2020历年复试)...
  5. 可逆网络 ICLR 2017 : Density Estimation Using Real NVP
  6. TS3DV642替代方案|HDMI2.0/DP1.4双向复用切换方案ASW3642|ASW3642完全替代TS3DV642
  7. 微信小程序 等待几秒、_微信小程序—setTimeOut定时器的问题及解决
  8. python 数据归一化,快速实现时间序列数据归一化
  9. 智慧燃气系列亮相两大展会 畅威物联网为啥这么受关注
  10. chrome浏览器中安转wappalyzer插件的步骤