这样写你看下:这是这种写法无法将x传到b里面去
为邵原等地区用户提供了全套网页设计制作服务,及邵原网站建设行业解决方案。主营业务为成都网站设计、成都做网站、邵原网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
def b(y):
return x+y
def a(x):
return b
其实你调用a--打印的是a的内存地址,a(x)就是调用的a方法,返回的是b相当于你直接打印b的内存地址一样,
所以
a--函数a的内存地址
a(x) --调用a方法,返回b函数对象相当于--b
a(x)(y)--b(y)调用b方法返回x和y的值,这里x取的是a方法的参数值,y是b方法的参数值,这点可以理解下参数的作用域
我有一个初步理解,但不知道底层细节,python中函数名也是个变量,可以说你定义的所有名称都是变量,所有的变量你理解成一个指针,指向一个空间,传递名称则传递指针,给其他函数这个空间的开始。那么这个()呢,在py中有个call方法,你看不到,这个括号会执行call,call会运行解释你的代码。这样,一个函数才算是真正执行了。
如函数:
1、不带括号时,调用的是这个函数本身
2、带括号(此时必须传入需要的参数),调用的是函数的return结果
def cun (a,b):
return a+b
print(cun) : 调用函数,打印的是函数
print(cun(2,3)),调用函数运行后结果,打印的是 5
你这里要是加了括号,那么返回的就是fucy函数的返回值。那么他的返回值是多少呢?函数没传,那肯定就会TypeError,说没有参数;那你加参数的话,那闭包还有撒用?
我觉得,加没加,就是是不是对象的区别
第一处函数fu2无参数,如果不带括号返回的是这个函数的属性,需要带括号才会返回参数
第二处下面用法是a=f1(5)(8),根据函数定义已经给函数f2()传导参数,所以return时不需要再用()传导参数