函数和装饰器

函数

简介

函数也叫方法,是编程中不可或缺的组成部分,在代码编写的过程中,会出现很多代码复用的情况,这种时候把代码块抽离出来构建一个函数,这样在其他需要同样的写法时可以使用函数。

参数

默认参数、位置参数、关键字参数

  • 形参:定义函数时的参数,如public void Func(a,b)中的a、b就是形参
  • 实参:调用函数时的传入的值,如Func(1,2)中的1、2就是实参
  • 默认参数:定义参数时为形参提供的默认值,且默认参数必须在尾端,如果调用函数时没有传入参数,则会取默认参数的值
  • 位置参数:调用函数时传入的参数数量和位置都与定义函数时保持一致,则称为位置参数
  • 关键字参数:调用函数时使用的是键值对方式传入,即key=value,混合传参时关键字参数必须在位置参数之后;关键字参数允许你以任何顺序传递参数,不再需要与形参的位置完全一致,只要将参数名写正确即可。
def TestFunc(num1,num2):
	return num1-num2
print(TestFunc(num2=10,num1=3))

image

可变参数

简介

可变参数一般用于函数中,当我们不确定函数需要使用多少参数,或者不确定参数的类型情况下,会使用到可变参数;但是各种编程语言中的可变参数都不太一样,在C#中使用关键字params来修饰可变参数,且必须是在参数列表的末尾,在python中,使用 * 或者 ** 来标识可变参数

*args 和 **args

  • 定义: *args 和 **args 都是可变参数。
    *args用来表示多个无名参数,本质是元组类型
    **args用来标识关键字参数,本质是字典类型
  • *args允许函数接收任意数量的位置参数,这些参数会议字典的形式传入内部函数,其中args是参数名称,可以是任意名称,不一定非得是args
  • **args允许函数接收任意数量的关键字参数,这些参数会以字典的形式传入函数内部,其中args是参数名称,可以是任意名称,不一定非得是args
def TestFunc(*args1,**args2):
    print(args1)
    print(args2)

TestFunc("abc",5,x=7,y=55)

image

装饰器

简介

装饰器是给现有的模块增添新的小功能,可以对原函数进行功能扩展,而且还不需要修改原函数的内容,也不需要修改原函数的调用。装饰器的使用符合了面向对象编程的开放封闭原则。

def MsgFunc(msg=None):
    def Decorator(func):
        def warpper(*arg,**arg2):
            func(*arg,**arg2)
        return warpper
    return Decorator

@MsgFunc(msg="this is a test")
def TestFunc(*arg,**arg2):
    for v in arg:
        print(v)
    for k,v in arg2.items():
        print(f"K:{k}    V:{v}")

TestFunc("abcd",5,x=1,y=8)

def TestBoard(func):
    def wapper(*arg,**args):
        result = func(**args)
        print(result)
    return wapper

@TestBoard
def CalcValue(x,y):
    return x+y

CalcValue(y=20,x=12)

image
image

posted @ 2025-06-05 20:59  请明月  阅读(7)  评论(0)    收藏  举报