Python中args、kwargs 是什么
有勇气的牛排
358
Python
2024-08-21 23:09:59
前言
*args
和**kwargs
是用于函数定义的两种特殊语法,用来处理可变数量的参数。
- args:用于将多个非关键字参数(positional arguments)作为一个元祖传递给args变量。
- kwargs:会将任意数量的关键字参数,打包为字典传给kwargs变量。
人类语言描述:
1、2个都用于接收任意数量参数。
2、args将参数转为元组(非关键字->直接传参数)。
3、kwargs将参数转为字典(关键字->用等号传递的那个)。
1 args 案例
def func(*args):
print(args)
func(1, 2)

2 kwargs 案例
def func(**kwargs):
print(kwargs)
func(name='有勇气的牛排', id=1)

3 args与kwargs同时使用
def func(*args, **kwargs):
print(f"args: {args}")
print(f"kwargs: {kwargs}")
func(1, 2, 3, name='有勇气的牛排', id=1)

<h2><a id="_0"></a>前言</h2>
<p><code>*args</code>和<code>**kwargs</code> 是用于函数定义的两种特殊语法,用来处理<strong>可变数量的参数</strong>。</p>
<ul>
<li>args:用于将多个<strong>非关键字参数</strong>(positional arguments)作为一个<strong>元祖</strong>传递给args变量。</li>
<li>kwargs:会将任意数量的<strong>关键字参数</strong>,打包为<strong>字典</strong>传给kwargs变量。</li>
</ul>
<p><strong>人类语言描述:</strong></p>
<p>1、2个都用于接收任意数量参数。</p>
<p>2、args将参数转为<strong>元组</strong>(非关键字->直接传参数)。</p>
<p>3、kwargs将参数转为<strong>字典</strong>(关键字->用等号传递的那个)。</p>
<h2><a id="1_args__19"></a>1 args 案例</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">def</span> <span class="hljs-title function_">func</span>(<span class="hljs-params">*args</span>):
<span class="hljs-built_in">print</span>(args)
<span class="hljs-comment"># 输出:(1, 2)</span>
func(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>)
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/b3def82144a57e40c650c694a89b1cc5.png" alt="Python args 案例" /></p>
<h2><a id="2_kwargs__31"></a>2 kwargs 案例</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">def</span> <span class="hljs-title function_">func</span>(<span class="hljs-params">**kwargs</span>):
<span class="hljs-built_in">print</span>(kwargs)
<span class="hljs-comment"># 输出:{'name': '有勇气的牛排', 'id': 1}</span>
func(name=<span class="hljs-string">'有勇气的牛排'</span>, <span class="hljs-built_in">id</span>=<span class="hljs-number">1</span>)
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/77f1d243727818730427418057a7065d.png" alt="Python kwargs 案例" /></p>
<h2><a id="3_argskwargs_43"></a>3 args与kwargs同时使用</h2>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">def</span> <span class="hljs-title function_">func</span>(<span class="hljs-params">*args, **kwargs</span>):
<span class="hljs-built_in">print</span>(<span class="hljs-string">f"args: <span class="hljs-subst">{args}</span>"</span>)
<span class="hljs-comment"># 输出:args: (1, 2, 3)</span>
<span class="hljs-built_in">print</span>(<span class="hljs-string">f"kwargs: <span class="hljs-subst">{kwargs}</span>"</span>)
<span class="hljs-comment"># 输出:kwargs: {'name': '有勇气的牛排', 'id': 1}</span>
func(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, name=<span class="hljs-string">'有勇气的牛排'</span>, <span class="hljs-built_in">id</span>=<span class="hljs-number">1</span>)
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/622336636f25fdc392b1bf924a604e96.png" alt="Python args与kwargs同时使用案例" /></p>
留言