我们可以基于条件传递新的函数参数吗?

时间:2018-08-16 02:05:17

标签: python

我想知道是否只有在满足条件语句的情况下才可以将新参数传递给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_limy_lim是元组,并设置放大显示imshow图的位置。

现在,上面的代码不起作用,因为x_limy_lim被认为是默认参数,并且在尝试运行代码时出现错误

SyntaxError: non-default argument follows default argument

如果我在选择参数之前之前设置了x_limy_lim,则一切正常(提供了x_limy_lim,并且正确的格式),即使我未将选择设置为等于任何字符串。

现在,我的问题是我只想提供函数参数 x_limy_lim if choice='zoom',即提供参数x_limy_lim取决于我们是否调用了choice='zoom'。如果我没有设置choice='zoom',那么我不想提供x_limy_lim。如果确实设置了choice='zoom',则必须提供x_limy_lim。所以,我的问题是,有可能这样做吗?如果可以,怎么办?

0 个答案:

没有答案