您的位置:首页 > 编程语言 > Python开发

Python3缩进对逻辑的影响

2016-03-15 19:56 399 查看

前话

我很佩服设计Python这门语言的人,因为这门语言的规则让我不得不写出美观的代码。

Python的缩进要求是强制的,因为缩进不对直接影响了代码逻辑。

因为python写法相对其他编程语言简化许多,没有花括号让我对代码分块摸不着头脑。

因此刚开始学的时候,多种文本编辑器自动补全def,while,if else 时会在结尾自动添加 pass ,这导致我误认为python的类,函数结束符号为pass

谷歌才发现pass作用是占位提示,不做其他任何事情 (:3」∠)

那么python是怎样代码分块呢?我就不废话了,没错就是缩进,这个缩进可以使Tab键缩进,或者4个空格键代替Tab缩进。

python缩进哲学

python设计者是这么认为的:

类似C、Java等语言用花括号{}来区分代码块,初学者或者语言编写较为豪放者会不注意代码编写风格,花括号内随便写,分布分行,缩进不缩进不影响代码逻辑,这会导致破坏代码的层次结构,让人难以阅读。因此许多老手会不断给新手们提示要注意缩进,让代码美观,避免给自己后人留坑。

何不把美观和逻辑结合在一起?

终于,这套强制性的python编写规则出来了,你要学python,你必须代码美观。

python缩进规则

栗子一

大家看下面这段代码:

def sayHello():
print('Hello World!')

sayHello()


乍看以为结果是输出
Hello World
,执行以下,结果是什么都没输出。

其实就是缩进在作怪了,下面图片拆分代码块,相同颜色框在一起说明他们是属于同一代码块,导致这段代码只是定义了一个函数,但是并未执行它。



因此正确写法是:

def sayHello():
print('Hello World!')

sayHello()


可以看到
sayHello()
前进了一个缩进,这时再执行这段代码就可以看到万恶的
Hello World
了。

因为代码块变成了这样,因此上面一个代码块定义了一个函数,下面的代码块是执行函数。



栗子二

看这个有关类的代码:

class Student(object):

def __init__(self, name):
self.name=name
def say(self):
print('I\'am',self.name)

def getName(self):
return self.name

stu=Student('pwc')
stu.say()
print('Hello',stu.getName())


执行以下,发现报错了,错误提示是getName属性不存在!!!



其实再分析一下代码块,可以看出,噢,getName函数位置不对,它被写在say函数里面了。



因此正确写法是:

class Student(object):

def __init__(self, name):
self.name=name
def say(self):
print('I\'am',self.name)

def getName(self):
return self.name

stu=Student('pwc')
stu.say()
print('Hello',stu.getName())


然后可以看到正确输出了。



好了我就简单举了两个例子,只要记住缩进影响逻辑,相信其他代码大家也能得心应手的控制了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 编程语言