tbu*_*s13 3 python parameters arguments parameter-passing python-3.x
说我有一个这样定义的函数:
def inner_func(spam, eggs):
# code
Run Code Online (Sandbox Code Playgroud)
然后,我想调用这样的函数:
outer_func(spam=45, eggs="blah")
Run Code Online (Sandbox Code Playgroud)
在内部,outer_func我希望能够inner_func使用与传入的参数完全相同的参数进行调用outer_func。
可以这样编写outer_func:
def outer_func(spam, eggs):
inner_func(spam, eggs)
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够更改参数inner_func接受,并相应地更改传递给我的参数outer_func,而不必outer_func每次都更改任何内容。
有(简便)方法可以做到这一点吗?请使用Python 3。
看起来您正在寻找*和**符号:
def outer_func(*args, **kwargs):
inner_func(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
然后您可以做outer_func(1, 2, 3, a='x', b='y'),并且outer_func会打电话给inner_func(1, 2, 3, a='x', b='y')。
如果仅允许使用关键字参数,请删除*args。
在函数定义中,标记为的参数*接收不与其他声明的参数对应的所有位置参数的元组,标记为的参数接收不与其他声明的参数对应**的所有关键字参数的字典。
在函数调用中,给序列(或其他可迭代)参数加上前缀将其*解压缩为单独的位置参数,并给映射参数加上前缀将其**解压缩为单独的关键字参数。
| 归档时间: |
|
| 查看次数: |
2615 次 |
| 最近记录: |