【问题标题】:How to call a function with less arguments that is set (Python 3)如何调用设置的参数较少的函数(Python 3)
【发布时间】:2016-09-07 14:17:11
【问题描述】:

我正在 Python 3 中制作终端模拟器。命令存储在函数中,例如:

def rd(os_vartmp, os_vartmp2):
    if os_vartmp == None:
        print('rd [path] [-S]')
        print('Delete a folder')
    else:
        if os.path.isfile(os_vartmp) == True:
            if os_vartmp2 == '-S': print('a')
            else:
                print(ERR5)

a = input('Command: ') 

终端是这样工作的:

  1. 要求用户输入
  2. 拆分输入
  3. 使用输入的第一部分在本地搜索函数
  4. 如果有,则使用输入的其余部分作为参数
  5. 调用函数

这里的问题是,当我使用例如 'rd "boot.py" -S' 调用函数 'rd' 时,它工作得很好。但是,如果我需要这样称呼它:rd“boot.py”,它会给我一个关于在需要 2 时给出的 1 参数的错误。有解决办法吗?

【问题讨论】:

标签: function python-3.x terminal arguments emulation


【解决方案1】:

您可以通过在方法定义中分配一个值来使参数成为可选的。例如:

def Add(x=0, y=0):
    return x+y

如果你只输入一个值,y 将默认为 0。如果我想给 y 一个值但让 x 回退到它的默认值,我可以做Add(y=10)。我希望这会有所帮助!

【讨论】:

  • 这对我不起作用,因为我似乎无法更改 os_vartmp2 的值
【解决方案2】:

你试过了吗?

def rd(os_vartmp, os_vartmp2="-S"):

您可以使用默认值,然后执行 rd("boot.py"),而不是尝试获取需要 rd("boot.py",null) 的空值。

希望它有效。

【讨论】:

  • 但有时我不需要'-S'
  • 还有什么可以作为默认值的吗?或许 def rd(os_vartmp, os_vartmp2=""): 想了想,不知道能不能行,
  • 是的,我试过了,但似乎我无法更改 os_vartmp2 的值。如果我用'-S'调用它,它将 os_vartmp2 设置为 ""
猜你喜欢
  • 2022-07-16
  • 1970-01-01
  • 2022-11-13
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 2020-06-17
  • 1970-01-01
相关资源
最近更新 更多