python函数封装的好处_如何理解python的函数嵌套、闭包以及他们的在项目中的作用?...

python的话,我还真不好说为啥,我简单学过一点点的py语法,皮毛都够不上,这个游标卡尺直接把我劝退了

从js的角度来说说这个问题好了

============

js里头是没有模块这个概念的,任何一个定义在全局的函数,都能在任意位置引用

所以我们可以在函数内部定义一个函数,作为私有函数,模拟模块化

比如

function module() {

function f1(){

}

function f2(){

privateF1()

}

function privateF1(){

}

return {

f1,f2

}

}

那么你说的嵌套函数,其实应该是叫高阶函数

这东西可以存储数据,跟类一样

比如:

function person(name,age){

function hello(toSomebody){

console.log(`hello ${toSomebody}, i am ${name}`)

}

function getAge(){

return age

}

return {

hello,getAge

}

}

嵌套函数还可以作为回调

比如:

function ajax(param,callback){

function commonErrorHandle(){

}

return fetch(param).then(callback).catch(commonErrorHandle)

}

还可以把一部分有共同功能的函数都封装到一起,避免暴露到全局去

function doSth() {

function step1(){}

function step2(){}

function step3(){}

step1()

//...

}

也可以作为计算表达式用

function doExample(param) {

function calc(tags){

let tags = tags.split(',')

tags = tags.map(function(tag){

return tag+'标签'

})

tags = tags.filter(item => !!item)

return tags

}

let tags = calc(param.tags)

// ..

}

======

当然了,现在js仍处在一个学习的过程中,已经有了模块化,异步函数,正在有私有属性,还有想做的do表达式,惰性计算参数,甚至throw表达式等等

以上的几个写法,可能都不太推荐使用了

闭包的话,在js里头,MDN上说是指函数以及函数的context在内的一个集合;但是通用的说法是上面那句话里,被传递的函数,调用了函数外部的变量,导致这个变量在外层函数执行完毕之后内部的局部变量无法被释放

比如person那个用法:

正常执行完person之后,其参数的name和age理论上就可以释放了,但是由于内部传递出来的hello和getage两个方法分别引用了name和age,这会导致这两个参数不会被释放(如果主动放弃对返回值的引用,这两个参数还是会被释放的)

但是函数这个东西,威力远不止于此

python里头怎么用,可以自己探索

其实最基本的,函数就封装几个计算,根据参数返回不同的值,然后这个函数可以被传递,就这么简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值