相关疑难解决方法(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
查看次数

使用布尔表达式分配字符串

我试图从别人的项目中理解这段代码.如果您想要上下文,请访问:https://github.com/newsapps/beeswithmachineguns/blob/master/beeswithmachineguns/bees.py#L501

IS_PY2只是一个布尔变量,True如果Python主要版本是2.我知道非空字符串是True,但由于某种原因我不理解openmode被指定'w'或者'wt'而不是TrueFalse.

openmode = IS_PY2 and 'w' or 'wt'
openkwargs = IS_PY2 and {} or {'encoding': 'utf-8', 'newline': ''}
Run Code Online (Sandbox Code Playgroud)

有人能解释一下结果吗?

python python-2.7

6
推荐指数
2
解决办法
942
查看次数

逻辑"和"运算符如何在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
查看次数

为什么[]和bool返回[]?

我试图在这样的函数中返回一个布尔值:

return mylist and any(condition(x) for x in mylist)
Run Code Online (Sandbox Code Playgroud)

True如果列表为空或者其中的任何元素满足条件,则应该返回行为.我使用第一个操作数作为短路,因为如果列表为空则any返回True,这不是我所追求的.

我希望[] and boolval返回False,因为该列表是空的,但让我吃惊,它返回[]是否boolvalTrueFalse.我希望第一个操作数被自动计算为布尔值,因为它涉及比较操作,而不是发生的任何事情.

我并不是真的在问如何解决我的问题,这可以通过显式类型转换轻松完成:bool(mylist)而是询问发生了什么以及为什么.

编辑:当我问"为什么"这种情况发生时,我不仅仅在寻找"事实",因为它们已经在链接的重复问题中进行了解释,而且还有实施此行为背后的原因.

python python-2.7

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

试图理解python中关于'和'命令的简单特性.任何人都可以澄清一下吗?

在Python中,如果我写的话

z = 1 and 2
print z
Run Code Online (Sandbox Code Playgroud)

然后它产生"2".

但如果我写

z = 0 and 2
print z
Run Code Online (Sandbox Code Playgroud)

现在,它产生"0".

它在现实生活中的问题可能并不重要,但我试图理解这里的逻辑.

python

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

在Python中使用'和'

我正在维护一个庞大的代码库,我在我的python代码中找到了类似这样的东西:

...
foo = bar(a, b, c) and foo
return foo
...
Run Code Online (Sandbox Code Playgroud)

其中foo被赋予一个布尔值,并在这里第一次被声明.这是什么意思/这个目的是什么/这里发生了什么?

python

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

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

标签 统计

python ×7

python-2.7 ×3

logical-operators ×1

operators ×1