Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python if和按位&;在同一条线上_Python_Bitwise Operators - Fatal编程技术网

Python if和按位&;在同一条线上

Python if和按位&;在同一条线上,python,bitwise-operators,Python,Bitwise Operators,我浏览了一个开源项目,发现了这个python方法。我知道&和是如何测试结果是否错误的 在Python中,诸如False、None、0、空字符串、空列表等值是“False”,而其他值是truthy。在这种情况下,它有效地将按位AND的结果与零进行比较 if (int & (1 << position)) != 0: # same thing if(int&(1if语句检查表达式的“真实性”。例如,如果您有: if some_expression: ... 这相当于写

我浏览了一个开源项目,发现了这个python方法。我知道&和是如何测试结果是否错误的

在Python中,诸如
False
None
0
、空字符串、空列表等值是“False”,而其他值是truthy。在这种情况下,它有效地将按位AND的结果与零进行比较

if (int & (1 << position)) != 0: # same thing

if(int&(1if语句检查表达式的“真实性”。例如,如果您有:

if some_expression:
    ...
这相当于写:

if bool(some_expression):
    ...

你不必显式调用<代码>布尔()/代码>,但是如果你想这样做的话,它的危害相对较小。有些程序员认为它是坏的风格,因为它不是严格必需的。 这不是必需的,因为Python中的每个表达式都有一个truthiness值

  • False
    (显然)
  • None
  • 0(作为int、long、float或任何其他数字类型)
  • 空字符串,无论是str还是unicode(这种区别主要存在于Python2.x中)
  • 空列表、元组、集合、字典和其他容器类型
自定义类还可以通过实现声明它们的真实性


因此,对于您的特定问题,即使表达式的计算结果为2,也将执行if/else的“if”部分,因为在布尔上下文中,任何非零int都将被视为True。

这只是测试是否设置了特定位,例如
get_位(4,2)='1'
,而
get_位(4,1)=='0'
虽然在变量名
int
中使用python关键字是非常糟糕的做法。注意
4=0100
,注意
get_位(7,2)=='1'
作为
7=0111
。你不是说不为零吗?@achampion是的,修复了。
if bool(some_expression):
    ...