Python中callable的理解?
>Python has a more general concept of callable object, that is every object that can be called, which means applied on some data.
我在读一篇博客的时候看到这句话,作者认为Python对callable的概念是比较宽泛的,任何对象都可以被调用。这样说对么?如何理解?
Python的内建的callable()
函数可以用来检测是否能够调用,如果所有对象都可以call,那么为什么还有检测呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
见stackoverflow上有关python的callable的讨论http://stackoverflow.com/questions/111234/what-is-a-callable-in-python
python的Object是一个泛型概念,而不是特制类的对象,比如函数也可以是一个Object,类也可以是Object。你看下callable()的原型,定义在builtin.py中
同意 @charliecui 说的
python的Object是一个泛型概念
。对于文中的话,我理解是
python
中一切都是对象,这些对象都是object
的实例,Python
创建对象是通过type
方式,这个type
又有一个__call__
方法,实现了这个方法,最终的对象就能被调用(callable
)。大概意思就是这些对象通过技巧都是可以调用的,通过使这些对象可以调用来处理一些数据。
简单的用法就是类似
web
框架中的路由 (Router
), 使得 Router直接装饰,不需要额外的创建实例来创建对象,而是让自身就是一个可以调用的对象。具体实现可以参考 可以参考 https://github.com/nod/tornroutes/blob/master/tornroutes/__init__.py
一个给
tornado
实现router
的decorator
仔细一看,这是英语断句的问题啊
不是“每个对象都能被调用”,而是“callable object”是“所有能被调用的对象”,最后那个从句解释调用的概念是“被应用于数据”。
Python has a concept
Python has a more general concept
Python has a more general concept of callable object
Python has a more general concept of callable object, that is every object that can be called
Python has a more general concept of callable object, that is every object that can be called, which means applied on some data