函数定义与调用

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

语法: 
def 函数名称(参数1, 参数2, ...):
<代码块>
return <表达式>

示例:

def hello(): 
print("Hello World!")
hello() # 调用函数

函数参数

函数参数:接收参数

示例:求和函数

def f(a, b): 
return a + b
print(f(1,2)) # 按参数位置赋值
print(f(b=2,a=1)) # 按对应关系赋值

示例:生成序列列表

def seq(n): 
result = []
x = 0
while x < n:
result.append(x)
x += 1
return result
print(seq(9))

函数参数:参数默认值

参数默认值:预先给参数定义默认值,如果调用函数时没指定该值,则用默认值。

示例:

def f(a, b=2): 
return a + b
print(f(1))
print(f(1,3))

函数参数:接收任意数量参数

前面学习的是固定参数数量,当不知道有多少个参数时可以在参数前面加*与**,表示可接收任意多个参数。

  • *args 接收任意多个参数,并放到一个元组中。

  • **kwargs 接收一个键值,并存储为字典。

示例:传入多个参数,计算总和

def func(*seq): 
x = 0
for n in seq:
x += n
return x
print(func(1,2,3))

示例:传入多个键值,进行处理

def func(**computer): 
for k,v in computer.items():
print("名称:%s\t价格:%s" % (k,v))
func(主机=5000,显示器=1000,鼠标=60,键盘=150)

匿名函数(Lambda)

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

示例:求和函数

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

函数装饰器

函数装饰器作用:装饰器本质上是一个函数,它可以让其他函数在不需要做任何代码 变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

应用场景:记录日志、性能测试、权限效验等

函数装饰器:无参数

示例:装饰器使用

def hello(): 
print("我是原函数")

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

dec = decorator(hello) # 装饰器传入函数
dec() # 调用内部函数

Python提供一个更简洁引用装饰器的方法:语法糖“@”

示例:

@decorator
def hello():
print("我是原函数")
hello()

函数装饰器:带参数

示例:

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

@decorator
def hello(msg):
print(msg)

hello("我是原函数")