Python学习3-一切皆对象

物理行与逻辑行的区别

在Python中缩进和空白是很重要的。

同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。

如何缩进

不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我 强烈建议 你在每个缩进层次使用 单个制表符 或 两个或四个空格 。

选择这三种缩进风格之一。更加重要的是,选择一种风格,然后一贯地使用它,即 只 使用这一种风格。

内建raw_input函数提供一个字符串,用于用户输入。

在python总语句结尾的冒号代表后面跟着的是一个语句块

在python中没有switch语句。(证实)可以用if...elif...else

布尔型变量。

for的使用 for i  in range(1,5):  进行循环

#!/usr/bin/python
#Sat Jan 5 18:38:13 CST 2013
for i in range(1,5) :
     print (i)

函数:函数通过def关键字定义,def关键字后一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。

#/usr/bin/python
#Sat Jan 5 19:02:52 CST 2013
def sayH() :
     print ("Hello function!")
sayH()

函数形参:函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。

参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语——函数中的参数名称为 形参 而你提供给函数调用的值称为实参 。

#!/usr/bin/python
#Sat Jan 5 19:08:37 CST 2013
def Max (x ,y) :
          if x>y :
               print (x)
          else :
               print (y)
Max(4,6)

局部变量:

全局变量用global进行修饰变量。没有global语句,是不可能定义在函数外的变量赋值的。也可以定义在函数外边(不鼓励这样定义)。因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global语句可以清楚地表明变量是在外面的块定义的。

默认参数值

在函数中的关键参数。当多个参数的时候,只赋值给一定的变量需要用定义。

Python有一个很奇特的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!


Python中的模块:模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。

模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们将学习如何使用标准库模块。

模块是如何工作的:首先,我们利用import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。

当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。

sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。

字节变异的.pyc文件。

from .. import语句

模块的__name__

模块相当于类。

模块的使用方法:

import 模块名

模块名.函数

          或: from 模块名 import 函数名

dir()函数。很重要。

删除变量:del 变量名

运用os.system()函数运行命令,使用前需加载相关os模块。

python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值。or也是从左到有计算表达式,返回第一个为真的值。(与其他语言不太相同)


我们已经走过了编写一个软件的各个环节。这些环节可以概括如下:

1. 什么(分析)

2. 如何(设计)

3. 编写(实施)

4. 测试(测试与调试)

5. 使用(实施或开发)

6. 维护(优化)


类和对象

类使用class关键字创建,类的域和方法被列在一个缩进块中。

     类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

     虽然你可以给这个参数任何名称,但是 强烈建议 你使用self这个名称——其他名称都是不赞成你使用的。使用一个标准的名称有很多优点——你的程序读者可以迅速识别它,如果使用self的话,还有些IDE(集成开发环境)也可以帮助你。

给C++/Java/C#程序员的注释Python中的self等价于C++中的self指针和Java、C#中的this参考。

你一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1,

arg2)——这就是self的原理了。

这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

self相当于php、java中的this。

__int__方法:__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。

#!/usr/bin/python
#Mon Jan 7 17:02:03 CST 2013
class Person :
     def __init__(self,name):
          self.name=name
     def sayHi(self) :
          print "Hello,my name is ",self.name
p = Person('Swaroop')
p.sayHi()

python中的__init__方法相当于php中的构造方法__construct()

有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。

类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。

对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。通过一个例子会使这个易于理解。

给C++/Java/C#程序员的注释

Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。

只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。

这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。

同样,注意__del__方法与 destructor 的概念类似。

继承:面向对象编程的主要好处就是代码的复用。实现这种服用的方法之一是通过继承机制。集成完全可以理解成类之间的类型和子类型的关系。

Python不会自动调用基本类的constructor,你得亲自专门调用它。

posted on 2013-02-02 13:31  无心出岫  阅读(599)  评论(0编辑  收藏  举报