python调用程序call_call在Python中改进数列的实例讲解
我们都有过函数调用的经历,那么call调用类实例的过程就跟函数很相似。类的用法很多人都知道了,类实例又是什么呢?可以把类看成一个设计图,类实例就是设计出的成品。现在我们弄清楚了call调用对象的概念,就可以进一步用来在python中改进数组,想学的小伙伴一起往下看吧。
__call__()
Python里,函数式first-class对象,这表示,函数可以被传递给另外的函数或者方法,可以从子程序里返回,可以赋给变量。
类的实例也可以像函数一样被对待,比如将他们传递给其他的函数或者方法,并且被调用。想要达到这个目的,就要在类里专门定义__call__()方法。
def __call__(self, [args ...]) 它接受一系列参数。假设x是类X的一个实例 , x.__call__(1, 2) 就等价于调用x(1,2),而实例x仿佛就是一个函数。
改进一下斐波那契数列:
class Fib(object):
请加一个__call__方法,让调用更简单:
>>> f = Fib()
>>> print(f(10))
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
可以把实例对象用类似函数的形式表示,进一步模糊了函数和对象之间的概念。
class Fib(object):
def __init__(self):
pass
def __call__(self,num):
a,b = 0,1;
self.l=[]
for i in range (num):
self.l.append(a)
a,b= b,a+b
return self.l
def __str__(self):
return str(self.l)
__rept__=__str__
f = Fib()
print(f(10))
__call__()知识点扩展
在Python中,函数其实是一个对象:
>>> f = abs
>>> f.__name__
'abs'
>>> f(-123)
由于 f 可以被调用,所以,f 被称为可调用对象。
所有的函数都是可调用对象。
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
我们把 Person 类变成一个可调用对象:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print 'My name is %s...' % self.name
print 'My friend is %s...' % friend
现在可以对 Person 实例直接调用:
>>> p = Person('Bob', 'male')
>>> p('Tim')
My name is Bob...
My friend is Tim...
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
关于次知识点的思考和扩展,脚本之家会在后续整理和补充,感谢大家对脚本之家的支持。
python调用程序call_call在Python中改进数列的实例讲解相关推荐
- python if else 嵌套格式_python中if嵌套命令实例讲解
一.嵌套命令计算机执行的顺序 缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令. 1.先给score赋值: 2.因为if和else是只能留一个的互斥关系,if和else下的代码 ...
- excel调用python编程-使用Python和xlwt向Excel文件中写入中文的实例
sheet1.write(row_num,0,f) row_num = 1 book.save('demo.xls') 程序执行结果如下: grey@DESKTOP-3T80NPQ:/mnt/e/01 ...
- python调用everything批量查找表格中的文件名在磁盘中是否存在
python调用everything批量查找表格中的文件名在磁盘中是否存在 介绍 Everything 配置 使用openpyxl读写文件 读文件 写文件 BeautifulSoup的使用 创建 be ...
- python的empty函数_python中numpy.empty()函数实例讲解
在使用python编程的过程中,想要快速的创建ndarray数组,可以使用numpy.empty()函数.numpy.empty()函数所创建的数组内所有元素均为空,没有实际意义,所以它也是创建数组最 ...
- php simplexml_load_file 详解,php中simplexml_load_file函数用法实例讲解
php中simplexml_load_file函数用法实例讲解 发布于 2015-02-07 06:53:40 | 136 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文 ...
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
- python调用shell命令-「Python」6种python中执行shell命令方法
用Python调用Shell命令有如下几种方式: 第一种: os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等 ...
- python调用程序call_Python下的subprocess.call()使用和注意事项
Python虽然有许多优秀的第三方库,但在实际使用的时候免不了使用一些cmd调用的程序,毕竟这类程序比较底层,更快.也更稳定.比如GDAL.FFmpeg. ImageMagick等. 利用Python ...
- python调用c++动态库 linux_linux中使用boost.python调用c++动态库的方法
前言 最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动态库是跑在远程linux主机上面.测试办法是让 robot ...
最新文章
- 有没有一只蜻蜓永远为你守候?
- Linux C编程--临时文件
- SAP企业解决方案SAP Business One敏捷系列—敏捷制造
- Java编程入门100例之二十二(字符串查找)
- (11) ejb学习: Jpa事务管理类型 container 和 bean
- java)_Java NIO系列教程(一) Java NIO 概述
- 关于STM32 IAP
- 数据库管理工具 Navicat使用教程:在SQL Server上监视什么(第1部分)
- 理解Docker(1):Docker 安装和基础用法
- 解读absolute与relative(转载)
- [Error] expected primary-expression before '' token是什么意思
- [译]基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1]
- 巴菲特私生活曝光:养两个老婆、生活不能自理。每次暴跌都是财富上台阶的天赐良机!...
- python学习记录--转义字符 字符串 特殊参数
- 计算机毕设Python+Vue音乐鉴赏网站前端开发(程序+LW+部署)
- 【JavaSE】多态数组的使用
- MySQL 的查询优化
- 关于Latex中pdf和eps图片的处理
- 国务院办公厅关于2014年部分节假日安排的通知
- 程序的指令和数据为什么分开存放?
热门文章
- fullpage常用配置
- 计算机代码清单目录,(程序源代码清单.doc
- 在linux centos 7上安装maven
- 【2020-06-16】CentOS8下yum安装nginx,systemctl start nginx报错undefined symbol: FT_Done_MM_Var
- android动画之布局动画,Android动画--布局动画 LayoutAnimation
- java统计大串中小串的出现次数_统计大串中小串出现的次数
- python operator 多属性排序_快速入门Python必备的基础知识
- 集成运算放大电路实验报告_模电总结:第三章、集成运算放大电路
- 【快速入门Linux】2_Linux命令—基本使用
- vscode 崩溃_太真实了!程序员崩溃的40个瞬间