0

为什么海象运算符不将关键字参数传递figsizematplotlib.pyplot.figure此代码?

#TODO: visualize whether the index is a valid x_value
fontsize=21
plt.figure(figsize:=(8,8))
plt.scatter(x_values_theory, y_values_theory, label='Theory')
plt.scatter(x_values_experimental, y_values_experimental, label='Experiment')
plt.xlabel('xlabel', fontsize=fontsize)
plt.ylabel('ylabel', fontsize=fontsize)
plt.legend(fontsize=fontsize)
plt.tick_params(labelsize=fontsize)
plt.show()

产量

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-55-94183c23eb8f> in <module>
      1 #TODO: visualize whether the index == df.[time
      2 fontsize=21
----> 3 plt.figure(figsize:=(8,8))
      4 plt.scatter(x_values_theory, y_values_theory, label='Theory')
      5 plt.scatter(x_values_experimental, y_values_experimental, label='Experiment')

/usr/local/lib/python3.8/site-packages/matplotlib/pyplot.py in figure(num, figsize, dpi, facecolor, edgecolor, frameon, FigureClass, clear, **kwargs)
    649             num = allnums[inum]
    650     else:
--> 651         num = int(num)  # crude validation of num argument
    652 
    653     figManager = _pylab_helpers.Gcf.get_fig_manager(num)

TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
4

1 回答 1

3

关键字参数用 指定=,而不是:=。根据PEP

:=操作符可以直接用在位置函数调用参数中;但是它在关键字参数中直接无效。

所以这意味着

plt.figure(figsize:=(8,8))

相当于

figsize = (8,8)
plt.figure(figsize)

因此,如果您只使用正确的运算符,您的代码应该可以工作:

plt.figure(figsize=(8,8))

如果您想同时分配和传递关键字参数,则需要编写这两件事,例如:

plt.figure(figsize=(figsize:=(8,8)))

请注意,括号是必需的。

于 2020-08-25T02:38:20.593 回答