首页 > 解决方案 > 如何对带有预定义参数的函数使用 if 语句

问题描述

这是我的代码:

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

我想要的是,每当在没有参数的情况下调用函数时,它应该在字典“Characters”中打印键,并且当给出参数时,它应该返回键而不是打印它们。else 语句可以工作,但 if 语句不起作用。

标签: pythonfunctionfor-loopif-statementyield

解决方案


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')的事情,做其他事情(其他值会导致异常)。


推荐阅读