主要的语法

2 基本的语法

在学习Python其他知识之前,先理解几个基本的语法概念,这样才干够理解它的代码是怎么样排列组合的,否则编辑出来的文本文件并不能叫做程序,由于Python的执行环境并不能对它进行解释执行,没有正确的结果输出。

2.1 大写和小写区分

在Python程序中。对于每个变量的名称都是大写和小写区分的。比方My和my是两个不同的变量。

2.2 空格和制表符

在编敲代码时,都须要对程序进行排版。否则看起来不清楚,不明确,不easy理解。但在Python里。排版不仅仅是为了好看,还当作一种语法来看待。这样看来,它是语法,假设不按它的排版来做。意味着程序执行不了,或者执行结果不正确。

每一行代码的缩进,都觉得是一个新的作用域開始,都是一个代码块的開始。具有同样缩进的代码是同一个代码块。假设都使用空格来缩进,那么同样空格的代码行表示在同一个作用域里。

假设使用制表符来对齐。也是同样制表符的代码行表示为同一个作用域。既然空格和制表符都能够排版作用。是否就能够在同一个程序里混合使用呢?答案是否定的。尽管在一些编辑器里空格和制表符显示出来的效果一样,但实际在处理程序上有区别。

比方制表符定义为一个制表符就缩进两个空格。那么两个制表符与四个空格在排版上是一样的结果,但实际上在代码分析里难以推断出来。由于制表符是两个字符,而空格是四个字符。这样就不知道这两行代码在缩进上是否属于同一个作用域了。

因此,在Python的程序永远不要混合制表符与空格对齐的代码。

在编敲代码之前,把全部制表符转换为输出相应的空格来替代。 这样在程序编码里永远仅仅有空格。没有制表符了。由于Python是一种强制缩进代码的语言,它的排版是非常好看的,代码层次感更加好。不像其他语言,排版不作为语法。导致每个人使用不一样的规则。编写出来的程序,还须要使用其他工具来检查程序是排版一致性,还须要规定代码排版的规则。

或许有人说。这样代码不紧凑,占用过多的屏幕空间。

假设放在电脑刚发明的时候。或许是正确的,由于那时的显示器没有多大,能一屏里多看些代码是有优势的。但在今天,显示器都已经普及24寸了,在这方面已经没有物理上的限制了。长处就更加显现出来,作为Python的程序猿。热烈地拥抱这个伟大的长处吧!

2.3 对象

对象何物也?对象是指对面的大象吗?显示不是。那么对象又是指热恋中的情人吗?也不是。对象在编程的世界里,有着特别的意义。它是指客观世界里的人、物、事等直接在计算机逻辑中的映射。在编程史中,最有名的等式是:

程序 = 数据结构 + 算法

在没有发明面向对象编程之前,都是使用上在这个等式来指导编敲代码的,比方碰到一个问题,就先寻找表示这个物体的结构,再思考对这个结构的操作算法。这样在C语言代表里,就声明有非常多结构。然后再写非常多非常多函数,这样就完毕程序的功能。

假设想把这个程序的结构改动一下。全部与这个相关的函数都须要改动。但由于它们之间没有明确的关联。改动起来就须要一个一个地查找。比較easy有一些函数没有改动到。

后来人们发现把数据结构与算法写到一起,就更加easy维护和明确了。这样程序就会变成以下这种等式:

程序 = 对象 + 对象

对象 = 数据结构 + 算法

在这一种思路的转变之下,程序维护更加方便了。封装得更完好。由于不同的数据结构相应着不同的算法。但同一种数据结构可能算法有非常多种。比方刚開始时,编写的算法可能是尽量简单,开发速度尽量快,而不是算法有多少优秀,降低多少的CPU执行。

在项目初期,大家都不清楚那些代码执行最多,那些代码是关键代码,那些代码是须要优化的,仅仅有在測试和客户试用之后,才会了解到那些代码须要优化了,这时就能够对原来的算法进行改写。但又不是影响原来的代码,这样使用对象来编程,就显得非常方便了。有这么大的长处,在Python里全部东西都是对象。就连数据的基本类型都是由对象组成的。

比方字符串对象。列表对象。

这样使用起来。就非常方便了。但也带来一点坏处,就是占用内存会有点大。速度也会变慢一点。

2.4 作用域

在编写一个大规模的软件里。有几百万行代码,有数万人开发的情形,在这种情况这下。要保证全部人编写的名称不反复。使用传统的语言显然是有点难度的。那么近代的语言都会使用作用域来限制变量的訪问的局限性。

像Python使用函数和模块的作用域,在函数里使用的变量仅仅能在函数里使用,而不能函数外面使用。或者变量在某个模块里使用。就不能在别的模块里直接使用了,当然要在别的模块里使用,就得採用显式说明的方式才干够。比方A模块里使用的变量count。在B模块里也使用的变量count,在C模块里要訪问A和B模块里的变量。就要採用例如以下的方式:

A.count和B.count

通过这种方式,不管在A或B模块的变量,都不会相互干扰,达到变量作用域的限制。

因此。在Python里。模块也是一个对象,不同的模块就是不同的对象。

 

 

 

posted @ 2016-01-24 08:43  blfshiye  阅读(196)  评论(0编辑  收藏  举报