如何扭转反斜杠的作用?

时间:2019-03-21 12:52:50

标签: python

我不太确定如何更恰当地说明问题,但以下示例可以说明我的需要:

getSortedData =() => {
    let newSort = 'name asc';
    if (this.state.sorteData === newSort) 'name desc';

    this.setState({sortedData: newSort}, () => {
        this.getData();
    })
}

假设我将此函数称为def func(prefix): prefix = prefix or "" some_name = prefix + "-" + "bar" print(some_name) ,则输出将为func("foo"),但是当我调用foo-bar时,输出将为func(None),而我想要的只是{{ 1}}。

现在很明显,如果条件允许,我可以写这篇文章并加以解决。但是,有没有一种Python方式可以做到这一点?它更像是倒置版本-bar

然后我可以写类似

bar

那会神奇的。

2 个答案:

答案 0 :(得分:4)

使用str.join(),并过滤掉空的组件:

def func(prefix):
    return '-'.join(filter(None, (prefix, 'bar')))

这也适用于空字符串:

>>> def func(prefix):
...     return '-'.join(filter(None, (prefix, 'bar')))
...
>>> func(None)
'bar'
>>> func('foo')
'foo-bar'
>>> func('')
'bar'

一个很好的选择是只使用条件表达式:

def func(prefix):
    return f"{prefix}-bar" if prefix else "bar"

同样,此处的空字符串与None相同,如果空字符串应导致if prefix is not None,则使用'-bar'

答案 1 :(得分:1)

在有效前缀中包含-,而不是加入操作中。

def foo(prefix=None):
    # prefix = prefix + "-" if prefix is not None else ""
    prefix += "-" if prefix else ""
    return prefix + "bar"

如果您出于某种原因想要在某种情况下想要"-bar"这样的输出,则可以区分无前缀和空前缀。

def foo(prefix=None):
    prefix += "-" if prefix is not None else ""
    return prefix + "bar"

在这种情况下,foo()将产生"bar",而foo("")将产生"-bar"