Python 函数(三)

2021/4/13 20:28:44

本文主要是介绍Python 函数(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=       

    今天小婷儿给大家分享的是Python 函数(三)。


Python 函数(三)          


 

Python 3 函数 (闭包、装饰器、递归、高阶函数)

 

一、闭包

内部函数可以引用外部函数的参数和局部变量,当外部函数返回内部函数时,相关参数和变量

都保存在返回的函数中,简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包。

 

例一:

def sum_out(*args):

    def sum_in():   #定义内内部函数

        sumV = sum(args)    #使用外部函数的args变量

        return sumV

    return sum_in   #返回内部函数

S = sum_out(1, 2, 3)

print(S()) #真正调用的是sum_in函数

Python 3 结果:6

 

例二:

def add1():

    a = 1

    b = 2

    def add2(m, n):

        return a + b + m + n

    return add2

Add = add1()

print(Add(5,6))

Python 3 结果:14

 

二、装饰器

装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数;

简言之,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,

使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能。

基本格式(记录下函数执行的时间):

import time

def add():

    print('add')

add()

def log(func):

    def wrapper():

        print('调用%s函数时间:%s' % (func.__name__, time.strftime('%Y-%m-%d %H:%M:%S')))

        func()

    return wrapper

wrap1 = log(add)

wrap1()

 注:__name__可以获得函数名称

 

例一(带有参数的装饰器):

import time

def deco(func):

    def wrapper(a,b):

        startTime = time.time()

        func(a,b)

        endTime = time.time()

        msecs = (endTime - startTime)*1000

        print("time is %d ms" %msecs)

    return wrapper

@deco

def func(a,b):

    print("hello,here is a func for add :")

    time.sleep(1)

    print("result is %d" %(a+b))

if __name__ == '__main__':

    f = func

    f(3,4)

 

例二(带有不定参数的装饰器):

import time

def deco(func):

    def wrapper(*args, **kwargs):

        startTime = time.time()

        func(*args, **kwargs)

        endTime = time.time()

        msecs = (endTime - startTime)*1000

        print("time is %d ms" %msecs)

    return wrapper

@deco

def func(a,b):

    print("hello,here is a func for add :")

    time.sleep(1)

    print("result is %d" %(a+b))

@deco

def func2(a,b,c):

    print("hello,here is a func for add :")

    time.sleep(1)

    print("result is %d" %(a+b+c))

if __name__ == '__main__':

    f = func

    func2(3,4,5)

    f(3,4)

 

例三(多个装饰器):

import time

def deco01(func):

    def wrapper(*args, **kwargs):

        print("this is deco01")

        startTime = time.time()

        func(*args, **kwargs)

        endTime = time.time()

        msecs = (endTime - startTime)*1000

        print("time is %d ms" %msecs)

        print("deco01 end here")

    return wrapper

def deco02(func):

    def wrapper(*args, **kwargs):

        print("this is deco02")

        func(*args, **kwargs)

        print("deco02 end here")

    return wrapper

@deco01

@deco02

def func(a,b):

    print("hello,here is a func for add :")

    time.sleep(1)

    print("result is %d" %(a+b))

if __name__ == '__main__':

    f = func

    f(3,4)

 


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


DB笔试面试历史连接  

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


小麦苗课堂培训认证  

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

高可用(RAC+DG+OGG)培训说明连接:https://mp.weixin.qq.com/s/4vf042CnOdAD8zDyjUueiw

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


DBA宝典小程序  

  DBA宝典小程序

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

● 本文作者:小婷儿

● 作者博客地址:http://www.cnblogs.com/xxtalhr

● 版权所有,欢迎分享本文,转载请保留出处

● QQ群:483766429

● QQ号:87605025

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。



这篇关于Python 函数(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程