避免 Python 中的5个陷阱,可以为您节省数小时的调试时间!

在使用 Python 进行编码时,有可能不规范的编码不会引发错误,而是出现意想不到的结果。

意外的字符串连接

我们可以使用 “+” 运算符来连接两个字符串。不过,如果两个字符串彼此相邻,即使不使用 “+” 运算符,它们也会隐式的连接在一起。

请注意下面示例代码缺少了一个逗号。

>>> list1 = ["a","b""c","d","e"]   >>> len(list1)   4   >>> list1   ['a', 'bc', 'd', 'e']   

代码正常运行,并没有引发 SyntaxError。这种情况下调试排查错误可能很困难。请特别注意字符串的隐式连接。

>>> str1 = "hello" "world"   >>> str1   'helloworld'   

变量赋值与条件语句

在 Python 中,我们可以在一行中为多个变量赋值。此外,我们可以简化选择结构,在一行中编写 if-else 语句。两者相遇,可以称为三元运算,是提高代码可读性和简化代码的方法。如果,书写不规范,运行结果可能会让你迷惑。

>>> x, y = (0, 1)   >>> x   0   >>> y   1   >>> condition = False   >>> x, y = (0, 1) if condition else None, None   >>> x   >>> y   >>> print(x)   None   >>> print(y)   None   >>> x,y   (None, None)   

如果条件为 True,会发生什么?

`>>> condition = True   >>> x, y = (0, 1) if condition else None, None   >>> x, y   ((0, 1), None)   >>>` 

我们试图使用括号来提高可读性。可是实际的结果是,如果条件为 True,则 x 赋值为 (0,1),否则为 “None” 。y 始终赋值为 “None”。如果后者加上括号,得到正确结果。

>>> condition = True   >>> x, y = (0, 1) if condition else (None, None)   >>> x, y   (0, 1)   

在这种情况下,我更喜欢正常的 if-else 语句,它不太容易出错:

if condition:       x, y = 0, 1   else:       x, y = None, None   

创建元组

正常情况,元组是使用括号创建。

t = ('one', 'two')   for i in t:       print(i)   # 输出:   one   two   

现在创建一个包含一个元素的元组。

t = ("one")    for i in t:       print(i)   # 输出:   o   n   e   

我们创建的是一个包含一个元素的元组,却输出三个元素。

说明:如果我们使用括号创建带有一个元素的元组,则不会创建元组,而是创建字符串对象!

在括号内增加一个逗号,用于创建具有一个元素的元组。

t = ("one",)    for i in t:       print(i)   # 输出:   one   

assert 断言

Python 中的 assert 语句是调试程序的便捷方法。

如果条件为 True,则不会发生任何反应,但如果条件为 False,则会引发断言错误。可以自定义错误消息。

>>> a = "a"   >>> b = "b"   >>> assert(a == b, "两者不相等!")   <pyshell>:1: SyntaxWarning: assertion is always true, perhaps remove parentheses?   

以上示例并没有引发断言错误。

其实,断言语句不应与括号一起使用!否则,整个语句被视为一个整体,非空始终为 True。

>>> a = "a"   >>> b = "b"   >>> assert a == b, "两者不相等!"   Traceback (most recent call last):     File "<pyshell>", line 1, in <module>   AssertionError: 两者不相等!   

列表的方法

>>> list1 = [1, 2, 3]   >>> list1 = list1.append(4)   >>> list1   >>> print(list1)   None   

以上错误可能很明显,但有时我们仍然犯错,列表意想不到的返回 None 值。

你只需要使用这些方法,而无需将其重新赋值给变量。

`>>> list1 = [1, 2, 3]   >>> list1.append(4)   >>> list1   [1, 2, 3, 4]   >>>` 
---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值