分享

Python基本语法

 xf_baby 2014-01-21
 Python基本语法

1.      四种数值类型:整型,长整型(L),浮点数,复数((1 + 3j),j表示虚数部分)

2.      字符串:

单引号,双引号(单双引号等价,无char类型)

三引号(多行)

转义符\(转义,换行)

自然字符串(字符串前加r,转义符失效)

Unicode字符串(字符串前加u,以Unicode格式处理)

字符串不可变(同Java)

两个相邻书写的字符串将自动连接

3.      标识符:首字符只允许字母或下划线;其它字符允许字母、下划线、数字;大小写敏感

4.      变量:不需要声明类型,变量名指向存储该对象的内存区域(同C指针)

5.      物理行与逻辑行:

python文件中的一行为物理行,每条python指令为逻辑行

一个物理行中可以包含多个逻辑行,逻辑行之间必须通过 ; 分隔

一个物理行中只有一个逻辑行时可省略 ;

多行字符串算做一个逻辑行

6.      缩进:同一层次(代码块)的语句必须用于同样的缩进

7.      运算符优先级:

8.      if条件语句:
if condition:  
   statements  
elif condition:  
   statements  
else:  
   statements  
条件语句无需括号(),条件末尾接 : ,代码块注意缩进

9.      while循环语句:
while condition:  
   statements  
else:  
   statements  
条件语句无需括号(),条件末尾接 : ,代码块注意缩进;else语句只在循环结束时执行一次

10.  for…in循环语句
for variable in sequence:  
   statements  
else:  
   statements  
in后面只能接序列(列表、元组、字符串);else语句只在循环结束时执行一次

11.  break:终止并跳出当前循环,且不执行该循环的else语句

12.  continue:跳过循环的剩余语句,直接开始下一轮循环

13.  列表:
[item0, item1, item2, …]  
可变,有序

列表中的对象可通过[index]访问(同数组)

14.  元组:
(item0, item1, item2, …)  
不可变(对原有元组的修改将直接生成新的元组,原有元组保持不变),有序

元组中的对象可通过[index]访问

只有一个元素的元组,该元素之后也应加 ,

元组可用于格式化字符串,如
'%s is %d years old' % (name, age)  

15. 字典:
{key0:value0, key1:value1, key2:value2, …}  
可变,键值对,无序,是dict类的实例

键必须是不可变对象,且键必须唯一(重复将覆盖原有值)

字典中的值可以通过键作为索引[key]来访问

字典的items()方法将返回一个列表,列表中的每项为键和值组成的元组

16.  序列:
字符串、列表、元组都是序列,其最大特点是有序和可索引

索引操作符为[index]

索引可以拓展为切片,即获取子序列,操作符为[a:b],表示从索引a的元素开始到索引b的元素结束(包含a,不包含b);若a无值([ :b])表示从头开始,若b无值([a: ])表示包含到尾后结束,因此[:]就表示原序列

非负数表示从序列头开始向右扫描,负数表示从序列尾开始向左扫描

17.  函数定义:
def function_name(<parameters>):  
   statements  
以关键字def开始,: 结束;括号中可填形参(同JavaScript)

18.  局部变量与全局变量:

函数内外都具有的同名变量实际没有任何关系;函数中的变量是局部的,其作用域就是该函数内

在函数内声明为global的变量是全局变量,它与函数外的同名变量指向同一内存区域

19.  形参默认值:函数声明时将形参用=赋值,改值即是该形参的默认值(同JavaScript);有默认值的形参必须在没有默认值的形参的右边

20.  关键参数:调用函数时,直接在括号中按照形参名指定形参值,而无需按照顺序指定

21.  return:从当前函数中跳出,并为函数返回一个值(同JavaScript)

22.  __doc__:函数、模块、类的第一个逻辑行的字符串是它的文档字符串,保存在命名空间的__doc__变量中,可以通过 <name>.__doc__的方式得到

23.  模块导入:(模块就是若干函数与类的集合文件)www.
import module  
导入模块内的全部函数和类,但在命名空间中只保存该模块本身,因此实际调用时需要采用module.function的形式
from module import function/class/attribute  
导入某模块的指定函数、类或属性,并将它保存到命名空间中,调用时直接采用具体函数名、类名或属性名

另外,from module import *也将导入模块内的所有函数和类及属性,且会在命名空间中保存导入的所有对象

为了代码的清晰,官方推荐使用import module进行导入

24.  __name__:每个模块的名称存在命名空间的__name__变量中,通过import导入的模块就会将其__name__的属性值写入当前的命名空间中;当前被运行的模块的__name__变量将自动被赋值为”__main__”

25.  创建类:
class className:  
   statements  
完成后,类名将会存入该模块的命名空间中

26.  定义类方法:
class className:  
   deffunctionName(self, <parameters>):  
        statements  
类方法的首形参必须存在(建议命名为self),表示类实例本身(同Java中的this)

27.  构造函数__init__
class className:  
   def __init__(self, <parameters>):  
        statements  
为类创建新实例时,__init__方法将自动执行一次

28.  析构函数__del__
class className:  
   def __del__(self):  
        statements  
系统检测到类实例不再被使用时自动调用以释放内存;另外也可以通过del语句手动调用,如
del instance  
29.  类变量与对象变量:
定义在类中的变量都是类变量,类变量只有一份拷贝,保存在类的命名空间中,任何一个类实例对其进行修改都是改变它在其它实例中的值
对象变量只由某个实例独自拥有,它保存在各个对象的self变量中
一般地,类变量都是公有的(public);只有名称以双下划线为前缀的变量是私有的(private)

30.  继承:
class subclass(superClass):  
   statement  
允许多重继承
子类不会自动调用父类的构造函数,需手动调用,且调用方式与普通方法不同,如下:
class subclass(superClass):  
   def __init__(self, <parameters1>):  
        superClass.__init__(self, <parameters2>)  
31.  实例化(类似C++):
instance = className(<parameters>)  
32.  方法调用:
instance.functionName(<parameters>)  
调用时无需self

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多