python小白必背100源代码_送给小白的 7 个 python 小坑

1. 缩进,符号和空格不正确

写代码时大家会使用缩进、对齐、空格等,其目的是为了提高代码的可读性。

但在python语言中,许多功能都依赖于缩进。

比如在创建一个新类时,该类中的所有内容都在声明下缩进,决策、循环还有其它结构语句也会出现类似的情况,

如果你在代码执行时发现问题,可以查看一下是否使用了正确的缩进。

来看看下面的例子,在使用IF语句时,请确保使用正确且合适的冒号和缩进,因为它们会导致语法和缩进错误。

val = 500

if val > 100

print("value is grater then 100")

File "", line 2

if val > 100

^

SyntaxError: invalid syntax

在上面的代码当中,出现了两处错误:if语句后面的:缺失;下一行没有进行正确的缩进,执行代码出错。

val = 500

if val > 100:

print("value is grater then 100")

value is grater then 100

当你更正上述代码中的两个问题后,你会发现整段代码能够很好的运行。

2. 错误使用类变量

class A(object):x = 1

class B(A):pass

class C(A):pass

print( A.x, B.x, C.x)

1 1 1

这里输出的值都是1,然后我们试着来改变一下A.x和B.x的值看看有什么变化。

B.x = 2

print (A.x, B.x, C.x)

A.x = 3

print (A.x, B.x, C.x)

1 2 1

3 2 3

我们只改变了A.x,为什么C.x改变呢?

这里需要简单了解一下python的命名空间。

python中,命名空间是名字到对象映射的结合,不同命名空间中的名字是没有关联的,这种映射的实现有点类似于python中的字典。

当你名字访问一个对象的属性时,先从对象的命名空间寻找。如果找到了这个属性,就返回这个属性的值;如果没有找到的话,则从类的命名空间中寻找,找到了就返回这个属性的值,找不到则抛出异常。

在Python中,类变量在内部作为字典处理,并遵循通常称为方法解析顺序(MRO)的方法


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部