您的位置:首页 > 健康 > 养生 > 提升学历有什么作用和好处_如何写一个app_网站建设制作模板_如何优化百度seo排名

提升学历有什么作用和好处_如何写一个app_网站建设制作模板_如何优化百度seo排名

2025/2/23 16:58:44 来源:https://blog.csdn.net/sagegrass/article/details/143496764  浏览:    关键词:提升学历有什么作用和好处_如何写一个app_网站建设制作模板_如何优化百度seo排名
提升学历有什么作用和好处_如何写一个app_网站建设制作模板_如何优化百度seo排名

while 1

很多初学者都很喜欢使用while 1,原因可能是,1只需要输入一个字符,更加“省事”,可以“偷懒”,并且,1看起来更加简洁明了。

实际上,在python中,while 1while True是等价的,都是布尔真值,这意味着,他们最终的结果都是无限循环。然而,从代码风格和可读性的角度来说,使用while 1是不适合的,正确的做法是使用while True,因为,其明确表达了意图,即“当条件为真时循环”。

相比之下,while 1则没有那么明确,并且,如果while 1可行的话,是不是while 2while 520while "sagegrass"都是可行的呢?如果这样做的话,代码将会陷入到混乱之中。因此,建议总是使用while True

按位代替逻辑

按位操作符

按位操作符,也即&|~,对于其使用,我之前有过详细的介绍,如果不了解的话,可以查看这篇文章,按位操作符的使用

逻辑操作符,也即andornot

按位操作符确实可以操作布尔值,例如:

bool1 = True
bool2 = Falseprint(bool1 & bool2)  # 结果为False
print(bool1 | bool2)  # 结果为True
print(~bool1)  # 结果为-2
print(~bool2)  # 结果为-1

对于~bool1的结果,可能让人大吃一惊,1按位取反以后,怎么不是0呢?怎么会变成-2呢?

实际上,对于任意整数x,~x的结果,应该为-(x + 1),所以对于1,结果为-(1 + 1),所以得到的是-2。

因此,很显然,按位取反不能代替not使用。

逻辑运算符的短路特性

那么,按位与以及按位或的结果确实看起来和逻辑与与逻辑或的结果是相同的,那么,按位与以及按位或可以代替逻辑运算符使用吗?

实际上,逻辑运算符具有短路特性,也即:

A and B时:如果A为False,则立即返回False,不再继续对B求值。

A or B时:如果A为True,则立即返回True,不再继续对B求值。

利用这个特性,可以写出一些专门的代码,例如:

# 除以0是不正确的,会触发异常# 如果使用逻辑运算符and,由于在条件False时就停止了,因此不会触发异常
if False and (1 / 0):pass# 如果使用按位运算符&,按位运算符没有短路特性,因此,会触发异常
if False & (1 / 0):pass

因此,按位运算符无法使用逻辑运算符的短路特性。

非布尔值的情况

如果,我们遇到了本身非布尔值,而是后续转为布尔值的情况,例如:

a = 1
b = 2print(a and b)  # 结果为True
print(a & b)  # 结果为0

可以看到,这里明显使用按位操作符就是不正确的了,他与我们希望得到的结果是完全不同的,除非改为:

a = 1 
b = 2print(bool(a) & bool(b))

因此,综合上述情况,按位操作符不应该,也不建议代替逻辑运算符使用。

命题逻辑的运算律

逻辑运算律

在数学中,运算律是一些基本的规则,用于对命题进行逻辑操作。

应用逻辑运算律

python中的逻辑运算符同样也遵循这些运算律,因此,可以应用到程序中。

例如,对于德摩根律,这些两种形式是等价的:

if not a or not b:passif not (a and b):pass

在实际使用中,可能是这样的,例如,对于一个用户登陆的情况:

username = request.get("username")  # 尝试取出用户名,可能有,也可能没有
password = request.get("password")  # 尝试取出密码,可能有,也可能没有# 按照正常思路,理解为“如果没有用户名或者没有密码”
if not username or not password:pass# 根据德摩根率,可以简写
if not (username and password):pass

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com