使用函数是模块化编程的第一步。 今天我就和大家讨论一下函数中参数的使用。 函数中的参数也是分层的。 让我们按顺序讨论它们。
位置参数
首先我们来说一下位置参数:
def position(x): y = x*x return y position(2) 4
位置参数是函数中的第一级参数。 一旦定义,它们就不能留空。 如果我们在这里直接调用该函数,会报错;
默认参数
def default(x=4): y = x*x return y default() 16 default(5) 25
这里我们定义了一个位置参数x,默认为4,所以调用函数时可以不填任何参数。
可变参数
可变参数,顾名思义,可以传入任意数量的参数。 例如,如果我们不知道有多少个参数,那么我们可以使用可变参数。 变量参数的定义非常简单。 只需要在位置参数前添加 * 即可。 例如:我现在有需求遍历一个文件夹中的文件,但是还没有确定是哪些文件夹:
def variable(*x): print(x) variable(2,4,6,8) (2, 4, 6, 8)
我们先来看看。 在参数前面加上*后,我们就可以接收任意数量的参数,同时输入的参数会自动形成一个原语,即一个可迭代的对象,供我们循环调用。
def variable(*x): for i in x: print(i) variable(2,4,6,8) 2 4 6 8
有人可能会说,世界上不是可以用列表或者祖先吗? 为什么我们应该使用可变参数? 是的,这是可能的,但不建议这样做。 提倡的是更简洁的语法。
关键字参数
前面提到的可变参数允许传入0个或任意数量的参数,这些参数被组装成一个原语。 关键字参数允许传入0个或者任意数量的包含参数名的参数,这些参数被组装成一个字典,即dict。 对于对应的关键字参数,需要在参数名称前添加**。 废话少说,直接看代码:
首先定义一个带有关键字参数的函数:
def keywords(**x): print(x)
然后传入参数:
keywords(a=2, b=4, c=5) {'a': 2, 'b': 4, 'c': 5}
我们可以看到结果,三个参数自动组装成一个列表。
组合参数
下一步是结合上面提到的各种参数。 必须记住一件事。 组合参数必须按规定的顺序使用,即:
位置参数 > 默认参数 > 变量参数 > 关键字参数
这是一个例子:
def combination(x, y=2, *m, **n): print( "x is {0}".format(x)) print('--------') print( "y is {0}".format(y)) print('--------') print( "m is {0}".format(m)) print('--------') print( "n is {0}".format(n))
我们定义一个具有组合参数的函数并打印每个参数以进行观察:
combination(3, 4, 8, 5, 6, a=0, b=5, c=7) x is 3 -------- y is 4 -------- m is (8, 5, 6) -------- n is {'a': 0, 'b': 5, 'c': 7}
结合输出结果,相信大家都能对函数中的这些参数有一个很好的理解。