python参数的传入 * ,**

本文介绍了一种让函数在执行完毕后不立即返回的方法,通过这种方式可以在特定场景下实现更灵活的编程技巧。这种方法尤其适用于需要函数保持运行状态或进行多次调用而避免重复初始化的情况。
http://www.cnblogs.com/tips4python/archive/2011/05/30/function_with_stay.html
Python 函数参数中,星号 `*` 双星号 `**` 是用于处理可变数量的参数的强大工具。它们允许函数接受任意数量的位置参数关键字参数。 ### 星号 `*` 的作用 - **收集位置参数为元组**:当在函数定义中使用 `*args` 时,所有额外的位置参数都会被收集到一个名为 `args` 的元组中。 ```python def my_function(*args): for arg in args: print(arg) my_function(1, 2, 3) ``` - **解包可迭代对象为位置参数**:在函数调用时,如果传递给函数的是一个可迭代对象(如列表或元组),可以使用 `*` 来解包这个可迭代对象,将其元素作为单独的位置参数传入函数[^3]。 ```python def add(a, b): return a + b numbers = [1, 2] result = add(*numbers) # 相当于 add(1, 2) ``` ### 双星号 `**` 的作用 - **收集关键字参数为字典**:在函数定义中使用 `**kwargs` 时,所有额外的关键字参数会被收集到一个名为 `kwargs` 的字典中,键是参数名,值是对应的参数值。 ```python def bar(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") bar(name='Alice', age=30) ``` - **解包字典为关键字参数**:在函数调用时,如果有一个字典包含了需要传递给函数的关键字参数,可以使用 `**` 来解包这个字典,使其内容作为关键字参数传入函数[^4]。 ```python def greet(name, message): print(f"{message}, {name}!") info = {'name': 'Bob', 'message': 'Hello'} greet(**info) # 相当于 greet(name='Bob', message='Hello') ``` ### 使用方法 当你想要创建一个能够处理不确定数量参数的函数时,你可以这样定义你的函数: - 如果你需要处理不确定数量的位置参数,可以在函数定义中使用 `*args`。 - 如果你需要处理不确定数量的关键字参数,可以在函数定义中使用 `**kwargs`。 此外,在实际编程中,`*` `**` 还可以用来强制要求某些参数必须以关键字形式提供,这通常与普通参数一起使用来分隔那些必须以关键字形式提供的参数。 例如: ```python def example(a, *, b, c): pass example(1, b=2, c=3) # 正确: b c 必须以关键字形式给出 # example(1, 2, 3) # 错误: b c 需要关键字形式 ``` 通过这种方式,Python 提供了非常灵活的方式来处理函数参数,使得编写通用且易于使用的函数成为可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值