【问题标题】:how to use if statement for function with pre-defined argument如何对带有预定义参数的函数使用 if 语句
【发布时间】:2021-05-24 21:52:29
【问题描述】:

这是我的代码:

def characters(a=''):
    if a:
        for c in Characters:
            b=c
            print(b)
    else:
        for char in Characters:
            yield char

我想要的是,无论何时调用不带参数的函数,它都应该在字典“Characters”中打印键,并且当给出参数时,它应该返回键而不是打印它们。 else 语句可以正常工作,但 if 语句不起作用。

【问题讨论】:

  • Characters 是字典还是列表?
  • 这是一本字典。

标签: python function for-loop if-statement yield


【解决方案1】:

你可以试试这样的:

def characters(a=""):
    character_keys = list(Characters.keys())
    if a:
        return character_keys
    else:
        print(character_keys)

【讨论】:

  • 请注意,此解决方案仅适用于dict 字符可在您的代码中的“全局”级别访问(也就是您最有可能在 0 缩进或 if __name__ == "__main__": 内)。如果不是这种情况,则必须将 Characters 作为参数传递给函数。
【解决方案2】:

if 是错误的方式——空字符串在 Python 眼中是虚假的。

但是,也许您可​​能想要一个具有某些语义的参数默认值来代替“无参数”?

def characters(mode='print'):
    if mode == 'print':
        for c in Characters:
            print(c)
    elif mode == 'yield':
        for char in Characters:
            yield char
    else:
        raise ValueError('invalid mode')

这种方式characters() 默认打印,characters('print') 执行相同操作,characters('yield') 执行其他操作(其他值会导致异常)。

【讨论】:

  • 下面的答案有效,但这种方法仍然无效。当我使用 characters()/characters('print') 没有响应时,characters('yield') 似乎工作正常..
猜你喜欢
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2021-09-02
相关资源
最近更新 更多