相关疑难解决方法(0)

奇怪地使用"和"/"或"运算符

我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义

背景是:

def fn(*args):
    return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)

我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?

10 and 7-2
Run Code Online (Sandbox Code Playgroud)

返回5.同样,更改和将导致或将导致功能更改.所以

10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)

会回来10.

这是合法/可靠的风格,还是有任何问题?

python operators logical-operators

84
推荐指数
4
解决办法
9622
查看次数

X和Y或Z - 三元运算符

在Java或C中,我们将<condition> ? X : Y其转换为Python X if <condition> else Y.

但也有这个小技巧:<condition> and X or Y.

虽然我明白,这是相当于前述三元运营商,我觉得很难把握如何andor运营商能够产生正确的结果.这背后的逻辑是什么?

python syntax ternary-operator

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

逻辑"和"运算符如何在Python中使用整数?

所以,我正在玩翻译,并输入以下内容:

In [95]: 1 and 2
Out[95]: 2

In [96]: 1 and 5
Out[96]: 5

In [97]: 234324 and 2
Out[97]: 2

In [98]: 234324 and 22343243242
Out[98]: 22343243242L

In [99]: 1 or 2 and 9
Out[99]: 1
Run Code Online (Sandbox Code Playgroud)

最初我认为它与False和True值有关,因为:

In [101]: True + True
Out[101]: 2

In [102]: True * 5
Out[102]: 5
Run Code Online (Sandbox Code Playgroud)

但这似乎并不相关,因为False总是为0,而且从上面的试验来看,它似乎不是输出的最大值.

我不能在这里诚实地看到这种模式,并且在文档中找不到任何东西(老实说,我真的不知道如何有效地寻找它).

那么,怎么做

int(x) [logical operation] int(y)
Run Code Online (Sandbox Code Playgroud)

在Python工作?

python

5
推荐指数
2
解决办法
3935
查看次数

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

为什么`True 和~True` -2?

如果这是低于标准的问题,我非常抱歉,但我找不到明确的答案。

正如标题所说,为什么True and (~True)给出 -2 而True&(~True)给出 0?另外,为什么他们两个都不给False

这是非常违反直觉的,因为我期望有一个布尔表达式&并且and应该以相同的方式工作。

python python-3.7

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