相关疑难解决方法(0)

如何检查变量是否存在?

我想检查变量是否存在.现在我正在做这样的事情:

try:
   myVar
except NameError:
   # Do something.
Run Code Online (Sandbox Code Playgroud)

还有其他方法没有例外吗?

python variables exception

849
推荐指数
9
解决办法
91万
查看次数

如果在Python中没有返回默认值,是否有简写?

在C#中,我可以说x ?? "",如果x不为null,它将给出x,如果x为null,则为空字符串.我发现它对于使用数据库很有用.

如果Python在变量中找到None,有没有办法返回默认值?

python

182
推荐指数
4
解决办法
14万
查看次数

142
推荐指数
4
解决办法
3万
查看次数

在python中使用"或"进行赋值

将值赋给像这样的变量是否被认为是不好的风格?

x = "foobar" or None
y = some_variable or None
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,x得到值'foobar'.

python coding-style variable-assignment

32
推荐指数
4
解决办法
2万
查看次数

如果它们是None,则调用没有可选参数的函数

有一个带有可选参数的函数.

def alpha(p1="foo", p2="bar"):
     print('{0},{1}'.format(p1, p2))
Run Code Online (Sandbox Code Playgroud)

让我迭代一下当我们以不同方式使用该函数时会发生什么:

>>> alpha()
foo,bar
>>> alpha("FOO")
FOO,bar
>>> alpha(p2="BAR")
foo,BAR
>>> alpha(p1="FOO", p2=None)
FOO,None
Run Code Online (Sandbox Code Playgroud)

现在考虑我想要调用它的情况,alpha("FOO", myp2)并且myp2将包含要传递的值,或者是None.但即使该函数处理p2=None,我希望它使用其默认值"bar".
也许这令人困惑,所以让我改写一下:

如果myp2 is None,打电话alpha("FOO").不用了,打电话alpha("FOO", myp2).

区别是相关的,因为alpha("FOO", None)结果不同alpha("FOO").

我如何简洁(但可读)做出这种区分?

一种可能性通常是在内部检查无alpha,这将被鼓励,因为这将使代码更安全.但是假设alpha它实际上应该在其他地方使用,None就像它一样.

我想在来电方面处理这个问题.

一种可能性是区分案例:

if myp2 is None:
    alpha("FOO")
else:
    alpha("FOO", myp2)
Run Code Online (Sandbox Code Playgroud)

但是,当有多个这样的论点时,这很快就会成为很多代码.(指数,2 ^ n)

另一种可能性是简单地做alpha("FOO", myp2 or "bar"),但这需要我们知道默认值.通常,我可能会采用这种方法,但我可能稍后更改默认值, …

python python-3.x

29
推荐指数
4
解决办法
6361
查看次数

一个班轮“如果不是无则分配”

有没有办法只在分配的值不是 None 时才进行分配,否则什么都不做?

我们当然可以这样做:

x = get_value() if get_value() is not None
Run Code Online (Sandbox Code Playgroud)

但这将读取该值两次。我们可以将它缓存到一个局部变量中:

v = get_value()
x = v if v is not None
Run Code Online (Sandbox Code Playgroud)

但现在我们为一件简单的事情做了两个陈述。

我们可以写一个函数:

def return_if_not_none(v, default):
    if v is not None:
        return v
    else:
        return default
Run Code Online (Sandbox Code Playgroud)

然后做x = return_if_not_none(get_value(), x)。但是肯定已经有一个 Python 习惯用法可以实现这一点,无需访问xget_value()两次,也无需创建变量?

换句话说,假设=??是一个类似于C# null 合并运算符的 Python 运算。与 C# 不同??=,我们虚构的运算符检查右侧是否为None

x = 1
y = 2
z = None

x =?? y …
Run Code Online (Sandbox Code Playgroud)

python null-coalescing-operator python-3.x

11
推荐指数
1
解决办法
7124
查看次数

Python有Elvis运算符吗?

许多语言的三元运算符都是这样的:

x = f() ? f() : g()
Run Code Online (Sandbox Code Playgroud)

其中if f()为truthy则x赋值为f(),否则赋值为g().但是,某些语言有一个更简洁的elvis运算符,它在功能上是等价的:

x = f() ?: g()
Run Code Online (Sandbox Code Playgroud)

在python中,三元运算符表达如下:

x = f() if f() else g()
Run Code Online (Sandbox Code Playgroud)

但是python有更简洁的elvis操作符吗?

也许是这样的:

x = f() else g() # Not actually valid python
Run Code Online (Sandbox Code Playgroud)

python conditional-operator

9
推荐指数
2
解决办法
2757
查看次数

是否有Python等同于C#?和?? 运营商?

例如,在C#中(从v6开始)我可以说:

mass = (vehicle?.Mass / 10) ?? 150;
Run Code Online (Sandbox Code Playgroud)

如果有车辆,则将质量设置为车辆质量的十分之一;如果车辆为空,则设置为150(或者如果Mass属性为可空类型,则为零质量).

我可以在我的C#应用​​程序的脚本中使用Python(特别是IronPython)中的等效构造吗?

这对于显示可以被其他值修改的值的默认值特别有用 - 例如,我可能在我的星舰的脚本中定义了一个装甲组件,它总是消耗其安装的船上可用空间的10%,它的其他属性也可以缩放,但我想显示装甲大小,生命值,成本等的默认值,这样你就可以将它与其他船舶组件进行比较.否则,我可能不得不写一个复杂的表达式进行空检查或两次,就像我在V6之前在C#中所做的那样.

python ironpython

8
推荐指数
1
解决办法
1303
查看次数

Python 链式属性访问中的无传播

Python中是否有一个空传播运算符(“空感知成员访问”运算符),所以我可以写一些类似的东西

var = object?.children?.grandchildren?.property
Run Code Online (Sandbox Code Playgroud)

就像在 C#、VB.NET 和 TypeScript 中一样,而不是

var = None if not myobject\
              or not myobject.children\
              or not myobject.children.grandchildren\
    else myobject.children.grandchildren.property
Run Code Online (Sandbox Code Playgroud)

python null-coalescing-operator null-coalescing method-chaining

7
推荐指数
1
解决办法
2116
查看次数

Python版的C#的条件运算符(?)

我看到这个问题,但它使用?? 运算符作为空检查,我想将它用作bool true/false测试.

我在Python中有这个代码:

if self.trait == self.spouse.trait:
    trait = self.trait
else:
    trait = defualtTrait
Run Code Online (Sandbox Code Playgroud)

在C#中我可以这样写:

trait = this.trait == this.spouse.trait ? this.trait : defualtTrait;
Run Code Online (Sandbox Code Playgroud)

在Python中有类似的方法吗?

python conditional-operator

6
推荐指数
1
解决办法
810
查看次数

python 中的 SQL COALESCE() 方法

我如何从 SQL 中重新创建 COALESCE() 方法,但在 python 中?

python sql

3
推荐指数
1
解决办法
8737
查看次数

添加/总和两个不均匀长度的列表或元组

在Python中,是否有一种很好的方法来添加/求和(或以其他方式组合)两个长度不均匀的列表?

例如给出一些列表:

a = [1,2,3]
b = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

产品清单c:

c = [2,4,6,4]
Run Code Online (Sandbox Code Playgroud)

其中每个元素是的总和ab,取了缺少的元素为零?

python tuples sum list add

1
推荐指数
1
解决办法
1411
查看次数