在许多情况下,有两种实现选择:闭包和可调用类.例如,

class F:

def __init__(self, op):

self.op = op

def __call__(self, arg1, arg2):

if (self.op == 'mult'):

return arg1 * arg2

if (self.op == 'add'):

return arg1 + arg2

raise InvalidOp(op)

f = F('add')

要么

def F(op):

if op == 'or':

def f_(arg1, arg2):

return arg1 | arg2

return f_

if op == 'and':

def g_(arg1, arg2):

return arg1 & arg2

return g_

raise InvalidOp(op)

f = F('add')

在任何一个方向上做出选择时应该考虑哪些因素?

我能想到两个:

>似乎关闭总会有更好的表现(不能

想一个反例).

>我认为有些情况下,关闭无法完成工作(例如,如果

它的状态随时间而变化).

我在这些方面是否正确?还有什么可以补充的?

python闭包和函数调用区别_python – 函数闭包与可调用类相关推荐

  1. python闭包和函数调用区别_函数闭包与可调用类

    请注意,由于之前在我的测试代码中发现了一个错误,我原来的答案是不正确的.修订版如下. 我做了一个小程序来测量运行时间和内存消耗.我创建了以下可调用类和一个闭包:class CallMe: def __ ...

  2. python函数调用另一个函数结果_如何调用类中另一个函数的结果?

    在Python2.7中,我有一个类似这样的代码:class App(ttk.frame): def __init__(self, master=None): ttk.Frame.__init__(se ...

  3. python闭包和装饰器的区别_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。(转)...

    呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需要你了解一些函数式编程的概念,当然还有理解在python中定义和调用函数 ...

  4. python反射、闭包、装饰器_python之闭包、装饰器、生成器、反射

    1. 函数的作用域 1.在函数定义时候就固定,与调用位置无关,在调用的时候返回到函数定义的位置 x=1 #全局作用 def f1(): #整个f1函数是定义阶段 deff2():print(x)ret ...

  5. python函数调用语句_Python函数定义和函数调用

    原标题:Python函数定义和函数调用 我们已经使用了一些python内建函数,比如print().input().str()等等. 也使用了一些python自带模块的一些库函数,比如math模块的a ...

  6. python内置函数调用前_python之内置函数(一)

    一.内置函数 1.内置函数总览 abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() ...

  7. python中sort返回值_Python函数你真的都学会了吗?来看看这篇Python高阶函数!

    二.高阶函数 高级函数, 英文叫 Higher-order Function. 那么什么是高阶函数呢? 在说明什么是=高阶函数之前, 我们需要对函数再做进一步的理解! 2.1 函数的本质 函数的本质是 ...

  8. python中oxf2是多少_python 函数基础2

    一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点:1.约束函数的调用者必须按照Kye=value的形式传值. 2,.约束函数的调用者必须用我们指定的Key名. def aut ...

  9. python中的嵌套例题_Python函数嵌套实例

    在Python中函数可以作为参数进行传递,而也可以赋值给其他变量(类似Javascript,或者C/C++中的函数指针): 类似Javascript,Python支持函数嵌套,Javascript嵌套 ...

最新文章

  1. 机器学习“七宗罪”:影响可信度的七个常见错误
  2. 如何设置采购收货直接转到供应商库存?
  3. 暴力关闭Windows defender
  4. AAAI 2019 | 基于不同颗粒度语言联合训练的表示学习
  5. 细数开源历史上的九个重大事件
  6. 使用PHP创建SOCKET服务
  7. 你会处理圆周率吗?----- Python操作文件应用举例
  8. linux刷新profile文件,Linux下修改.bash_profile 文件改变PATH变量的值
  9. 获取选择的当前天、周、月、年的时间段
  10. 半透明效果的实现方式
  11. 西门子step7 c语言开发,关于西门子STEP7 V5.5中文编程软件
  12. Unity 3D 三维模型简介||
  13. Tesseract图文识别--简单
  14. 浅谈阳明学和佛学的异同
  15. 软件测试教学案例,软件测试案例教程
  16. 广告业务常用名词整理
  17. 数字图像处理与MATLAB 第四章学习笔记
  18. Linux基础命令学习——实战篇(给swap分区增加500M)
  19. 【推荐】一个聚合图床
  20. 使用USB方式给沁恒ch573F评估板烧写代码

热门文章

  1. android ios 传视频播放器,推荐用于iOS / Android全面格式的视频播放器|手机最强大的播放器...
  2. python cprofile_python 中 cprofile 分析 多进程程序
  3. esp32 arduion 加速下载json
  4. echo 在shell及脚本中显示色彩及闪烁警告效果
  5. Eclipse下,修改MAVEN 中央仓库地址,解决maven下载慢问题
  6. 如何下载64位版本的eclipse 以及配置
  7. MongoDB数据库和集合的基本操作
  8. BootStarp的form表单的基本写法
  9. 【转】android内存溢出的解决方法
  10. 使用CName记录的好处(转)