第3章 Python的基础
3.1 语法规范
说起Python的语法,就两个字“简单”。不夸张地说,一天就能入门。相比于其他语言的繁文缛节,一丝不苟,Python可谓相当不拘一格。
3.1.1 换行与缩进
Python的语法其实总结一下就两条。
(1)一条代码作为一行:比如一个赋值、一个运算、一个请求、一条打印等。
(2)对齐和缩进:同一级别的代码只需要保持对齐就可,对于不同级别的代码进行缩进,这样就能区分开代码执行的逻辑。
第一条其实很好理解,类似于近体诗,一句代表一个完整的意思,最后组成一个整体的代码。
悄悄的我走了
正如我悄悄的来
我挥一挥衣袖
不带走一片云彩
对应的代码如下。
a = 1
b = 2
c = a+b
print (c)
运行结果如图3.1所示。
图3.1 运行结果图
一目了然可以看懂代码,给变量a赋值为1,给变量b赋值为2,变量c等于a+b,打印变量c的值。
在理解第一条的基础上,再来理解第二条,上面的每一句诗都是同一个级别的,所以没有高低之分,只有顺序的先后。而需要表达层级关系的时候,可以用缩进来表示上下的层级,这个类似于Word的目录结构。
1 Python基础
1.1 Python语法1
1.2 Python语法2
1.2.1 Python语法2.1
实例代码:
a = 1
if a < 0:
print("负数")
else:
if a == 0:
print ("零")
else:
print ("正数")
运行结果如图3.2所示。
图3.2 运行结果图
给变量a赋值为1,然后判断a是否小于0,如果小于0,打印负数,如果不小于,则进入else的执行模块(if和else是平级的,即如果执行了if,就不执行else,反之也一样),然后进入else模块,继续判断a是否等于0,如果等于0,打印零,否则打印正数(else中的if和else是平级的,但隶属于else,只有当判断执行到了else才会再继续执行if和else的判断)。这个判断结构会在之后的章节中重点介绍,这里只是为了说明缩进和层级的关系。
明白了这些,就已经对Python的语法入门了。
3.1.2 模块导入
如果在Python程序中需要调用某些方法,而这些方法又存在于Python的标准模块或者第三方模块之中,那就需要对模块进行导入,只有将模块导入后才能调用相应的方法。
import 语句
先以导入Python自带的random模块为例,需要生成一个0~100的随机数并打印随机数的结果。
实例代码:
1 import random
2 a = random.randint(0,100)
3 print (a)
代码说明:
1 导入random模块。
2 调用random模块中的randint()函数,这个函数会随机生一个0~100的整数,并将结果赋值给变量a。
3 打印产生的随机数变量a。
运行结果如图3.3所示。
图3.3 运行结果图
由此可见,调用模块的方法就是先导入,然后以(模块.方法)的方式调用,当然有些方法里面还可以嵌套方法(模块.子模块1.方法a),即调用模块下的子模块1下的方法a,这是一个从属关系,一层层往下调用。
实例代码:
1 import sys
2 a = sys.modules.keys()
3 print (a)
代码说明:
(1)导入sys模块。
(2)调用sys模块中的modules模块下的keys()函数,这个函数返回所有已经导入的模块列表,并将结果赋值给变量a。
运行结果如图3.4所示。
图3.4 运行结果图
也许从代码的角度来说,这种写法比较冗余,当大量调用子模块下的各种方法时,需要写很长的代码,不过这种方法适用于初学者,因为初学者对于模块内的方法并不十分了解,所以导入整个模块,然后一层层往下找适用的方法,直到选择出最适合的方法。但对于已经熟练知道需要调用什么方法的人来说,就可以更精准地调用子模块,从而减少代码量。这时候需要使用form … import …来实现调用。从语法的语句来说很好理解,即从哪个模块中导入它的子模块。
实例代码:
1 from sys import modules
2 a = modules.keys()
3 print (a)
代码说明:
(1)从sys模块下导入modules模块。
(2)直接调用 modules 模块下的 keys()函数,这个函数返回所有已经导入的模块列表,并将结果赋值给变量a。
运行结果如图3.5所示。
图3.5 运行结果图
这两段代码运行的结果是一致的,只是导入的模块层级不同,所以调用的层级也不同。值得注意的是如果使用第二种导入方式的话,只有modules这个模块下的方法可用,sys下的其他模块是不可用的。
还有一种导入模块的方式与第二种类似,只是不再指定某个子模块,而是模块下的所有子模块。
实例代码:
1 from sys import *
2 a = modules.keys()
3 print (a)
运行结果也是一样的,区别于第二种的是只能使用modules模块下的方法,其他子模块一样可用,所以3种方式可以根据个人喜好或者实际需要灵活选择使用。
3.1.3 注释
Python 的注释与其他编程语言的注释是不一样的,一般主流的编程语言都是以//来注释一行代码,或者/ * */注释一段代码,而Python却是特有的用#来注释。
Python单行的注释以#开头,所有#后的这一行代码或者中文注释都不会被执行。
实例代码:
1 a = 1
2 b = 2
3 # a = b
4 print (a+b)
运行结果如图3.6所示。
执行这段代码,打印结果是3,因为执行到b = 2之后后面的注释行不会被执行,所以第三行a = b不会被执行,所以a+b的结果是1+2=3,而不是2+2=4。
如果要注释一段代码,则有一点不同,把3个单引号或者3个双引号当作一行,分别加到需要注释代码的上一行和下一行。
实例代码:
1 """
2 a = 1
3 print (a)
4 """
5 b = 4
6 print (b)
运行结果如图3.7所示。
图3.6 运行结果图
图3.7 运行结果图
执行这段代码,运行结果是4,因为第二行和第三行代码被注释了,所以不会被执行。