python 函数-作用域-匿名函数-闭包-装饰器

Posted 运维.大白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 函数-作用域-匿名函数-闭包-装饰器相关的知识,希望对你有一定的参考价值。

函数定义:是指一段可以直接被另一端程序或者代码引用的程序或者代码。
在编写代码时,常将一些常用功能或者模块编写成函数,放在函数库中供公共使用,
**优点:**减少重复编写程序段和简化代码结构

语法:
def  函数名称(参数1,参数2.......:
		<代码块>
		retun <表达式>
示例:
def  hello():
		print("hello world")
hello() #调用函数

求和函数

def  calc(a,b):
    return  a + b
    
print(calc(1,3))     #按照数位置对应关系赋值
print(calc(a=5,b=3)) #按照参数名称对应关系赋值

获取一个列表,园组,数组

#函数获取列表
def  seq(n):
    list = []
    x = 0
    while x < n:
        list.append(x)
        x += 1
    return  list
print(seq(5))
#函数获取园组
def func(*args):
    print(args)
func(1,2,3)
#函数获取数组
def  func2(**kwargs):
    for k,v in kwargs.items():
        print(f"键:k,值:v")
    print(kwargs)

func2(name1="zhangsan",name2="lisi",name3="wangwu")


匿名函数:没有名字的函数,使用lambda关键字定义,一般用于单个表达式

s =  lambda a,b: a + b
print(s(1,2))
#等价于
def func(a,b):
    return a + b
print(func(2,2))

作用域
作用域:限制一个变量或者一段代码可用范围。好处是提高了逻辑的局部性,减少名字冲突

 a = 6 #全局变量
 def func():
       global b  #将局部变量设置成全局变量
       b = 3      #局部变量
       return b   #表示程序结束了 也可以返回值
func()
print(a)
print(func())

闭包: 闭包是一个定义在函数内部的函数

 #闭包
def  outer():
    x = 1
    def inner():
        print(x)
    return inner
outer()
sf = outer()
sf()

函数装饰器:本质上也是一个函数,它可以让其他函数在不需要做任何代码边得的前提下增加额外功能,装饰器的返回值也是一个函数对象。
应用场景:记录日志,性能测试,权限效应等

#常规函数
def   hello():
    # 这是一段逻辑代码
    print("我是一个功能")

def  hello2():
    #这是一段逻辑代码
    print("我是功能2")
#装饰器
def  decorator(func):
    def f():
        print("原函数开始执行")
        func()
        print("原函数结束了")
    return f  #返回函数执行结果
dec = decorator(hello)
dec() #调用内部函数获取结果
dec2 = decorator(hello2)
dec2()


另外一种写法

def  decorator(func):
    def f():
        print("原函数开始执行")
        func()
        print("原函数结束了")
    return f  #返回函数执行结果

@decorator #语法唐
def  hello3():
    print("我是功能3")
hello3()


在不改变原有函数结果的基础上给它增加新得功能
给装饰器添加参数
#装饰器

def  decorator(func):
    def f(msg):
        print("原函数开始执行")
        func(msg)
        print("原函数结束了")
    return f  #返回函数执行结果
@decorator
def hello(msg):
    print(msg)
hello("hello world")

原函数开始执行
hello world
原函数结束了

python内建函数

#官方文档列出得内建函数

https://docs.python.org/zh-cn/3.8/library/functions.html


内建高阶函数: map() filter()
高阶函数至少满足两个任意得条件:
能接收一个或者多个函数作为输出
输出一个函数
map()函数:根据提供得函数处理序列中得元素,完返回一个迭代器

以上是关于python 函数-作用域-匿名函数-闭包-装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python 函数-作用域-匿名函数-闭包-装饰器

函数和装饰器

python函数下篇装饰器和闭包,外加作用域

python闭包装饰器

Python函数作用域嵌套函数闭包函数高阶函数及装饰器的理解

Python基础day-7[闭包,装饰器]