发布网友 发布时间:2天前
共1个回答
热心网友 时间:9小时前
函数定义中参数的灵活处理是Python的一大特色。先从基础开始,函数`funcA`定义时,没有参数,表示它可以不接收任何输入,代码如下:
def funcA(): pass
而`funcB`则定义了两个参数`a`和`b`,调用时需要按顺序传递对应值:
def funcB(a, b): print a print b
执行`funcB(100, 99)`输出:
100 99
若传递的参数数量与定义不符,Python会报错,如执行`funcB(100)`会报`TypeError`。
参数默认值可以为函数提供便利,例如:
def funcC(a, b=0): print a print b
这样调用`funcC(100)`时,`b`自动设为0。
在无法确定参数数量时,可以使用`*`符号定义可变参数,如`funcD`函数接受多个参数,如下所示:
def funcD(a, b, *c): print a print b print "length of c is: %d " % len(c) print c
调用`funcD(1, 2, 3, 4, 5, 6)`时,输出结果如下:
1 2 length of c is: 4 (3, 4, 5, 6)
`funcD`至少需要接收2个参数,其余参数都会被收集到`c`中,若参数少于2个,则`c`为空tuple。
关键字参数允许在调用函数时指定参数名称,这样可以改变参数的输入顺序。例如:
funcB(a=100, b=99)
与
funcB(b=99, a=100)
调用效果相同,因为`funcB`明确指定了参数值。
在函数定义中使用`**`(双星号)可以接收关键字参数,构成一个字典传递给函数,例如:
def funcF(a, **b): print a for x in b: print x + ": " + str(b[x])
调用`funcF(100, c='你好', b=200)`,输出结果如下:
100 c: 你好 b: 200
这里,`b`被封装成字典,包含关键字参数`c`和`b`的值。
灵活运用参数传递机制,可以有效提升代码的灵活性与可读性,满足不同场景需求。