xdays

Python基础语法

August 05, 2011

特点:

简单易学;自由开源;高级解释型语言;可移植性;面向对象;可扩展;可嵌入;广泛的库支持。

Note: 简单易学却又无比强大,似乎不太符合逻辑。但不管怎么着,就像只有与一个人打交道才能了解一个人一样,既然选择了 python,那就在学和用中去体会这门语言的特点吧。

基础:

  1. 字面常量( literal constants ),其值不可改变,就代表它自己。

  2. 数值类型,有四种类型:整数,长整数,浮点数和复数。

  3. 字符串

    1. 引号:单双引号意义一样;三引号可以指定跨行字符串,而且可以穿插单双引号。
    2. 转义字符:在一些字符前加 back slash 可以构造特殊含义的字符。
    3. 纯字符串,如果在字符串放在引号中前加 r 或 R 则是纯字符串,不转义。
    4. 不可修改,字符串不可修改。
    5. 字符串连接,自动连接两个相邻的字符串。
  4. 变量

    1. 定义,内存中的一个片段,给它来个名字,就是变量。
    2. 命名规则,有字母,数字和下划线组成,不能以数字开头,区分大小写。
  5. 强制缩进,python 要求强制缩进

操作符和表达式

  1. 操作符
    1. 操作符及用法,http://www.ibiblio.org/swaroopch/byteofpython/read/operators.html#id3055069
    2. 操作符优先级,http://www.ibiblio.org/swaroopch/byteofpython/read/operator-precedence.html#id3056064
    3. 表达式由操作数和操作符组成

流控制

  1. if 语句,if expr: … elif expr: … else: …
  2. while 语句,while expr: … else: …
  3. for 语句,for expr: … else: …
  4. break 语句,用于循环中来中断循环,跳出循环来执行下面的语句。
  5. continue 语句,跳过当前的这一次循环,继续下次循环。

函数

  1. 含义,就是一小段预定义的程序,可以在其他地方调用它,代码重用的方式之一。
  2. 函数参数,传递给函数的变量,函数内部可以处理这些变量。
  3. 局部变量,在函数内部定义的变量只在函数内生效,函数执行完,变量对应的内存释放,即使函数内外的变量名一样;如果需要更改函数之外的变量用 global 声。
  4. 默认参数值,在定义形参的时候给它指定个值,这个值就是默认值。
  5. 关键字参数,直接通过关键值来给参数指定值,其优势在于可以不管参数顺序直接通过关键字来传递参数,这实际上是一种字典数据结构。
  6. 函数返回值由 return 来指定,pass 表示没有语句执行。
  7. DocStrings,是在函数中加入文档说明,便于以后理解。

模块

  1. 含义,代码重用的另一种方式,重用其他一系列的函数或变量,注意其他程序文件扩展名必须是 py。
  2. 为了执行的高效,通常将 py 文件编译为字节码文件,扩展名是 pyc。
  3. 尽量避免使用 from … import … 因为可能会导致重名。
  4. __name__变量用于判断模块是自己运行还是被其他程序调用执行。
  5. 其实模块就是一个程序,只是它自有定义部分没有执行部分。
  6. dir 方法可以列出当前模块中定义的所有标识符,包括变量和函数

数据结构

  1. 含义,组织数据的方式。

  2. 列表(list)用于有序的存放一组项目;格式如下[,];用 list[n]来检索 list 中的值。

  3. 元组(tuple)和列表的区别是元组不可修改。

    1. 通过元组来传递变量,print 语句要输出多个变量时,通常先把他们放到元组中再传递给 print。
  4. 字典(dictionary)就像一个地址本,用关键值来获取对应的值。

  5. 序列(sequence),包括列表,元组和字符串;通过索引操作获取序列中的项目;通过切片(slice)操作符来获取序列的部分项目。

  6. 参考(reference)类似链接,变量仅是对象的连接,修改了对象所有链接到该对象的变量都会改变,所以直接赋值有时候会有问题,解决方法是用切片操作符来复制对象。

面向对象编程

  1. 术语

    1. 类和对象,类创建了一种新的类型,对象是类的一个实例。
    2. 区域,在一个类或实例中的变量叫区域,又分两种类变量和实例变量。
    3. 方法,在一个类中的函数叫方法。
    4. 属性,区域和方法的统称。
    5. 创建类,class name: …
  2. self,类的方法与普通函数的区别是类的方法第一个参数是 self,这个特别的参数是指对象本身。这也是类或者对象的方法和函数的中重要区别。

  3. __init__方法和__del__方法,两个特殊的方法,一个是在创建对象时执行,一个是对象释放前执行。

  4. 继承,代码重用的另一种方式

    1. 父类称为超类(superclass)或者基本类(base class),子类称为派生类(deruved class)或者子类(subclass)
    2. 就是父类和子类的关系,修改父类的属性子类也会跟随改变,但修改子类的属性不会影响到父类和其他子类。
    3. 创建类的时候声明继承关系,class subclass_name(superclass ): …   这里在子类定义时后跟一个父类的 tuple。
    4. Python 不会自动调用 baseclass 的__init__方法,你需要手动通过 self 变量调用它。
  5. 多态,一个子类在任何需要父类的场合(比如子类定义的方法需要调用父类的方法时)都可以被替换成父类,也就是子类的对象可以被当作父类的对象,这种现象叫多态。

Input 和 Output

  1. 文件,初始化一个文件实例,然后调用文件类的相关方法来操作文件,最后用 close()关闭文件。
  2. print 语句中可以通过最后加“,”来去掉最后默认添加的换行符。
  3. pickle 或者 cpickle 用来将对象“存储”到文件中和从文件中“取存储”。

异常

  1. 异常发生在程序出错的情况。
  2. 用 try … except 语句来处理异常。
  3. 用 raise 引发异常,但要注意要指明异常或错误的类名称和对象,可以引发的错误和异常是 Error 和 Exception 类直接或间接导出的类。
  4. 用 try … finally 来处理发生异常后要执行的操作。

标准库

  1. 得参考官方库手册来学习了。

其他

  1. 特殊方法
  2. 即使单语句块也最好使用缩进格式。
  3. 定义函数时通过*收集所有多余参数到列表中,如 funame(arg1, *agrs),如果是**责多余的参数会被认为是键值对。
  4. exec 用来执行字符串中的 python 语句,eval 用来计算字符串中的表达式的值。
  5. assert 断言,如果断言不成立就会触发异常。
  6. repr 用来获取对象的规范字符串表示。

Principle

  • writing a single logical line in a single physical line only