第3章 Python基础
本章主题
语句和语法
变量赋值
基本风格指南
内存管理
第一个python程序
3.1语句和语法
python中有一些基本规则和特殊字符:
(#)井号表示之后为字符为python的注释
(\n)换行是标准的行分隔符
(\)反斜线表示继续上一行
(;)表示将两个语句连在一行中
(:)冒号表示将代码块的头和体分开
语句(代码块)用于缩进的方式体现
不同的缩进深度分隔不同的代码块
python文件以模块的形式组织
3.1.1注释(#)
解释器会忽略掉#之后的内容
3.2.1继续(/)
python语句,一般使用换行分隔,也就是说一行一个语句,一行过长的语句可以使用反斜杠(\)分解成几行。
在三引号时候可以跨行书写。
括号的可读性更好。
3.1.3多个语句构成代码(:)
缩进相同的一组语句构成一个代码块,我们称之为代码组。像if、while、def、class 这样的复合句。首行以关键字开始,以冒号(:)结束,改行之后的一行或多行被称之为代码组。
我们将首行及后面的代码称之为字句(clause)
3.1.4代码组不同的缩进分隔
python使用缩进来分隔代码组。代码的层次关系是通过同样深度的空格或制表符的缩进体现。同一代码组的代码必须严格左对齐。
核心风格:缩进4个空格宽度,避免使用制表符。
随着缩进深度的增加,代码块的层次也在增加,没有缩进的代码块是最高的层次的,被称之为主体(main)部分。
3.1.5同一行书写多个语句(;)
(;)分号允许你在同一行书写多个语句,之间用分号隔开。这些语句不能再这行开始的一个新的代码块。
例子:
import sys;x='foo';sys.stdout.write(x+'\n')3.1.6模块
每个python脚本都可以被当做一个模块。模块以磁盘文件的形式存在。当一个模块。
当一个模块过大,并且驱动了很多功能的话,就应该考虑拆一些代码出来另外建一个模块。
模块里面代码可以是一段直接可执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)调用。
3.2 变量赋值
3.2.1赋值操作符
python语言中,等号(=)是主要的赋值操作符(其他的是增量操作符)
如:
anInt=12在python语言中,对象是通过引用传递的。python的赋值语句不会返回值。
>>> x=1
>>> y=(x=x+1)#赋值语句不是合法表达式
SyntaxError: invalid syntax
>>> y=x=x+1
>>> x,y
(2, 2)
3.2.2增量赋值
x=x+1等价于
x+=1增量赋值符,其一是写法上的简化,其二是第一个对象进被处理一次。
可变对象呗修改,不可变对象则和A=A+B的结果一样。
>>> m=12
>>> m%=7
>>> m
5
>>> m**=2
>>> m
25
>>> aList=[123,'xyz']
>>> aList+=[45.6e7]
>>> aList
[123, 'xyz', 456000000.0]
3.2.3多重赋值
>>> x=y=z=1
>>> x
1
>>> y
1
>>> z
1该对象的同一个引用被赋值给x、y、z
3.2.4 "多元"赋值
将多个变量同时赋值的方法我们称之为多元赋值(multuple)
>>> (x,y,z)=(1,2,'a string')
>>> x
1
>>> y
2
>>> z
a string两个整型和一个字符串分别被赋值给x、y、z
python的多元赋值方法可以实现无需中间变量交换。
3.3标识符
3.3.1合法的python标识符
python的标识符规则和其他大部分用C编写的高级语言类似:
第一个字符必须是字母或者下划线(_)
剩下的字符可以是字符和数字或下划线。
大小写敏感
3.3.2关键字
3.3.3内建
python有任何一级代码使用的“内建”(built-in)的名字集全。把built-in当做“系统保留字”。
3.3.4专用下划线标识符
python用下划线作为变量前缀和后缀指定特殊变量。
对python下划线的特殊用法做了总结:
_xxx 不用‘from module import *’导入
_xxx_ 系统定义名字
_xxx 类中的私有变量名
核心风格:避免下划线作为变量名的开始
3.4基本风格指南
注释
确保注释的准确性。注释对自己和他人都很重要。
文档
python提供了一个机制,可通过__doc__特别变量,动态获得文档字串。在模块、类声明、或函数声明第一个没有赋值的字符串可以用属性obj.__doc__来访问。
obj是一个模块、类、或函数的名字。
缩进
缩进对其十分重要,增强代码可读性。不要使用制表符。
选择标识符名称
选择短的有意义的标识符。
python风格指南
3.4.1模块的结构和布局
用模块来合理组织你的python代码是简单又自然的方法。如下面的布局:
#(1)起始行
#(2)模块文档
#(3)模块导入
#(4)变量定义
#(5)类定义
#(6)函数定义
#(7)主程序
(1)起始行
通常只在类unix环境下使用。
(2)模块文档
简要介绍模块的功能及重要全局变量的含义,模块可通过 moudle.__doc__访问这些内容
#/usr/bin/env python (1)起始行
"this is a test module" (2)模块文档
import sys
import os (3)模块导入
debug=True (4)(全局)变量
class FooClass(object):
"Foo class"
pass (5)类定义
def test():
"test function"
foo=FooClass()
if debug:
print 'ran test()' (6)函数定义(若有)
of __name__=='__main__':
test() (7)主程序
(3)模块导入
导入当前模块的代码需要的所有模