乱世繁华中 3星
共回答了324个问题 评论
在Python中,可变参数函数可以通过在函数参数前面添加`*`或`**`来定义。
如果添加一个`*`,则表示将多个参数打包成一个元组传递给函数,函数在内部将其解包成单独的参数。示例代码如下:
```python
def add(*nums):
sum = 0
for n in nums:
sum += n
return sum
print(add(1, 2, 3, 4, 5)) # 输出15
print(add(1, 2)) # 输出3
```
如果添加两个`*`,则表示将多个关键字参数打包成一个字典传递给函数,函数在内部将其解包成单独的参数。示例代码如下:
```python
def print_info(**info):
for key, value in info.items():
print('{}: {}'.format(key, value))
print_info(name='Alice', age=25, gender='Female') # 输出name: Alice,age: 25,gender: Female
print_info(city='Beijing') # 输出city: Beijing
```
需要注意的是,使用可变参数函数时,在调用函数时如果传递了参数,这些参数都会被打包成元组或字典的形式传递给函数。因此,函数内部需要根据实际情况来处理这些元组或字典。
5小时前
眞愛迋孓 1星
共回答了17个问题 评论
如果我们想要在调用函数时,少输入一些变量。我们可以在定义函数值,输入一些默认的参数值:
def add(a, b = 2, c = 3):
return a + b + c
print(add(2))
output: 7
1
2
3
4
1
2
3
4
add函数有3个变量,那么我们在定义它的时候,后俩个变量被我们赋予了默认参数值分别是2和3。若没有在调用时,明确给出后俩个变量的参数值,那么python会自动调用默认参数值。
合法调用方式:
add(2),add(2,3),add(2,4,5)
非法定义方式:
def add(a,b = 2, c):
return a + b + c
1
2
3
4
5
1
2
3
4
5
但是要注意,当你定义了第一个变量的默认参数值后,那么后面的变量必须全部都带有默认参数值。
参数量可变的函数定义
在python中有一个∗ *∗运算符,来实现可变参数的函数定义。
*的用法,列表的解包:
arg = [2,4]
for i in range(*arg):
print(i)
字典的解包,直接为函数提供关键字以及参数:
d = {'a':1,'b':2,'c':3}
def add(a,b,c):
return a + b + c
print(add(**d))
output:6
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
当存在一个形式为 **name 的最后一个形参时,它会接收一个字典,其中包含除了与已有形参相对应的关键字参数以外的所有关键字参数。 这可以与一个形式为 *name,接收一个包含除了与已有形参列表以外的位置参数的 元组 的形参组合使用 (*name 必须出现在 **name 之前。) 例如,如果我们这样定义一个函数:
def cheeseshop(kind, *arguments, **keywords):
print("-- Do you have any", kind, "?")
print("-- I'm sorry, we're all out of", kind)
for arg in arguments:
print(arg)
print("-" * 40)
for kw in keywords:
print(kw, ":", keywords[kw])
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
我们可以这样去调用它:
cheeseshop("Limburger", "It's very runny, sir.",
"It's really very, VERY runny, sir.",
shopkeeper="Michael Palin",
client="John Cleese",
sketch="Cheese Shop Sketch")
1
2
3
4
5
1
2
3
4
2小时前
猜你喜欢的问题
2天前1个回答
2天前1个回答
2天前1个回答
2天前2个回答
2天前1个回答
2天前2个回答
热门问题推荐
2个月前5个回答
1个月前1个回答
3个月前3个回答
3个月前3个回答
1个月前1个回答
2个月前1个回答
2个月前3个回答
3个月前3个回答
3个月前1个回答