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 函数-作用域-匿名函数-闭包-装饰器的主要内容,如果未能解决你的问题,请参考以下文章