我想知道是否只有在满足条件语句的情况下才可以将新参数传递给python函数?例如,假设我们有代码
def plotting(data, choice=None, x_lim, y_lim):
for item in data:
fig, ax = plt.subplots(1, 1, figsize=(6,4))
fig.tight_layout()
ax.imshow(item)
ax.axis('off')
if choice == 'zoom':
axins = zoomed_inset_axes(ax, 12)
axins.imshow(item)
axins.set_xlim(x_lim) # x_lim parsed here
axins.set_ylim(y_lim) # y_lim parsed here
ip = InsetPosition(ax1, [-.8,.2,.8,.8])
axins.set_axes_locator(ip)
mark_inset(ax, axins, loc1=1, loc2=4, fc="none", ec="0.5")
plt.show()
plt.close()
我希望它能从最基本的角度创建一个imshow图。我也希望这样,如果我们要设置函数参数choice='zoom'
,该函数将创建一个新的imshow图的放大部分的图。在这里,x_lim
和y_lim
是元组,并设置放大显示imshow图的位置。
现在,上面的代码不起作用,因为x_lim
和y_lim
被认为是默认参数,并且在尝试运行代码时出现错误
SyntaxError: non-default argument follows default argument
如果我在选择参数之前之前设置了x_lim
和y_lim
,则一切正常(提供了x_lim
和y_lim
,并且正确的格式),即使我未将选择设置为等于任何字符串。
现在,我的问题是我只想提供函数参数 x_lim
和y_lim
if choice='zoom'
,即提供参数x_lim
和y_lim
取决于我们是否调用了choice='zoom'
。如果我没有设置choice='zoom'
,那么我不想提供x_lim
和y_lim
。如果确实设置了choice='zoom'
,则必须提供x_lim
和y_lim
。所以,我的问题是,有可能这样做吗?如果可以,怎么办?