<h2>python中的大多数函数参数都是“位置或关键字”参数</h2>
<p>即,如果我有此功能:</p>
<pre><code>def do_something(x, y):
pass
</code></pre>
<p>然后我可以这样调用它,使用位置参数:</p>
<pre><code>do_something(1, 2)
</code></pre>
<p>或者像这样,使用关键字参数:</p>
<pre><code>do_something(x=1, y=2)
</code></pre>
<p>或者像这样,混合使用这两个参数(但请注意,不允许在关键字参数之后有位置参数):</p>
<pre><code>do_something(1, y=2)
</code></pre>
<h2>但也可以使用仅位置参数或仅关键字参数定义函数</h2>
<p>假设我有另一个功能:</p>
<pre><code>def do_something_else(x, /, y, *, z):
pass
</code></pre>
<p>在这个函数中,我将<code>x</code>标记为仅位置,因为它位于<code>/</code>之前。我将<code>z</code>标记为仅作为关键字,因为它位于<code>*</code>之后<code>y</code>是位置参数或关键字参数,因为它位于<code>/</code>之后<code>*</code>之前。这意味着这两次调用函数的尝试将失败:第一次是因为<code>z</code>被作为位置参数调用,第二次是因为<code>x</code>被作为关键字参数调用:</p>
<pre><code>do_something_else(1, 2, 3) # will fail!
do_something_else(x=1, y=2, z=3) # will fail!
</code></pre>
<p>但是,这两次尝试都将成功-<code>y</code>仍然是位置参数或关键字参数</p>
<pre><code>do_something_else(1, 2, z=3) # fine
do_something_else(1, y=2, z=3) # fine
</code></pre>
<h2>“未来警告”信息</h2>
<p><code>FutureWarning</code>消息与您正在使用的python版本无关,而是与您正在使用的<code>pandas</code>版本有关<code>Pandas</code>是第三方库,不是python核心的一部分,因此您使用的<code>pandas</code>版本与您使用的python版本完全不同</p>
<p>警告让您知道,目前您可以编写<code>pd.concat(dfs, self._concat_axis)</code>,但他们正计划在<code>pandas</code>的未来版本中更改函数的定义,以便<code>objs</code>之外的所有参数将仅为关键字。也就是说,在他们进行此更改之后,<code>pd.concat(dfs, self._concat_axis)</code>将引发一个错误,您将不得不改为写入<code>pd.concat(dfs, axis=self._concat_axis)</code>。他们很可能会考虑进行此更改,因为使用关键字参数调用函数通常更清晰,对其他人来说更可读</p>