0基础入门Python—Python返回函数
小职 2021-03-10 来源 :Go语言进阶学习 阅读 453 评论 0

摘要:本文主要介绍了0基础入门Python—Python返回函数,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

本文主要介绍了0基础入门Python—Python返回函数,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

0基础入门Python—Python返回函数

一、什么是返回函数?

 

返回函数,简单的说就是返回值是一个函数。

 

返回的是函数,调用返回的函数的时候才会返回结果。

 

二、闭包 (以返回函数的形式实现)

 

相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”。

 

def returnre(a, b):

    def re():

        return a + b

 

    return re

 

test01 = returnre(1, 2)

test02 = returnre(1, 2)

print(test01 == test02)  # 每次调用都会返回新生成的函数

 0基础入门Python—Python返回函数

 

比如上面例子的re函数闭包的特性,嵌套定义在非全局作用域里面的函数,能够记住它在被定义的时候它所处的封闭命名空间。

 

来看一个例子:

 

def closur(a):

    def myprint():

        print(a)

 

    return myprint

 

test = closur(1)

test()

 0基础入门Python—Python返回函数

 

代码解析:

 

变量a是函数closur的一个本地变量,只应该存在于函数运行时,但正因为闭包的特性,将a的值封装进了返回函数。

 

def closuretest02(*args):

    f = []

    for i in args:

        def test():

            return i**2

        f.append(test)

    return f

test = closuretest02(1,2,3,4)

for i in test:

    print(i())

 0基础入门Python—Python返回函数

 

返回闭包时牢记的一点就是:

 

返回函数不要引用任何循环变量,或者后续会发生变化的变量。

 

如果一定要引用循环变量怎么办?

 

方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变:

 

def count():

    def f(j):

        def g():

            return j*j

        return g

    fs = []

    for i in range(1, 4):

        fs.append(f(i)) # f(i)立刻被执行,因此i的当前值被传入f()

    return fs

再看看结果:

 

f1, f2, f3 = count()

print(f1())

 

print(f2())

print(f3())

 0基础入门Python—Python返回函数

 

注:

 

缺点是代码较长,可利用lambda函数缩短代码。

 

一个函数可以返回一个计算结果,也可以返回一个函数。返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量。

 

三、拓展

 

nonlocal

 

nonlocal适用于嵌套函数中内部函数修改外部变量的值。

 

def outside():

    a = 1

    print('outside' + str(id(a)))

    def inside():

        nonlocal a

        print('inside ' + str(id(a)))

    inside()

outside()

因为使用nonlocal后,返回了闭包中有父函数的变量,所以父函数那里不会被回收。

 0基础入门Python—Python返回函数

 

 

四、总结

 

本文基于Python基础,介绍了返回函数。常见的返回函数的应用。函数作为返回值,闭包在实际应用中需要的点,遇到的难点,提供有效的解决方案。使用Python语言,能够更好的理解。

 

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

 

代码很简单,希望对你学习有帮助。



我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取学习教程,开发工具,代码大全,参考书籍

0基础入门Python—Python返回函数

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程