Python基本语法
1. 四种数值类型:整型,长整型(l),浮点数,复数((1 + 3j),j表示虚数部分)
2. 字符串:
单引号,双引号(单双引号等价,无char类型)
三引号(多行)
转义符\(转义,换行)
自然字符串(字符串前加r,转义符失效)
unicode字符串(字符串前加u,以unicode格式处理)
字符串不可变(同java)
两个相邻书写的字符串将自动连接
3. 标识符:首字符只允许字母或下划线;其它字符允许字母、下划线、数字;大小写敏感
4. 变量:不需要声明类型,变量名指向存储该对象的内存区域(同c指针)
5. 物理行与逻辑行:
python文件中的一行为物理行,每条python指令为逻辑行
一个物理行中可以包含多个逻辑行,逻辑行之间必须通过 ; 分隔
一个物理行中只有一个逻辑行时可省略 ;
多行字符串算做一个逻辑行
6. 缩进:同一层次(代码块)的语句必须用于同样的缩进
7. 运算符优先级:/shouce/pythonjc/ch05s03.html
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(): statements
以关键字def开始,: 结束;括号中可填形参(同javascript)
18. 局部变量与全局变量:
函数内外都具有的同名变量实际没有任何关系;函数中的变量是局部的,其作用域就是该函数内
在函数内声明为global的变量是全局变量,它与函数外的同名变量指向同一内存区域
19. 形参默认值:函数声明时将形参用=赋值,改值即是该形参的默认值(同javascript);有默认值的形参必须在没有默认值的形参的右边
20. 关键参数:调用函数时,直接在括号中按照形参名指定形参值,而无需按照顺序指定
21. return:从当前函数中跳出,并为函数返回一个值(同javascript)
22. __doc__:函数、模块、类的第一个逻辑行的字符串是它的文档字符串,保存在命名空间的__doc__变量中,可以通过
23. 模块导入:(模块就是若干函数与类的集合文件)
导入模块内的全部函数和类,但在命名空间中只保存该模块本身,因此实际调用时需要采用module.function的形式
导入某模块的指定函数、类或属性,并将它保存到命名空间中,调用时直接采用具体函数名、类名或属性名 另外,from module import *也将导入模块内的所有函数和类及属性,且会在命名空间中保存导入的所有对象 为了代码的清晰,官方推荐使用import module进行导入 24. __name__:每个模块的名称存在命名空间的__name__变量中,通过import导入的模块就会将其__name__的属性值写入当前的命名空间中;当前被运行的模块的__name__变量将自动被赋值为”__main__” 25. 创建类:
完成后,类名将会存入该模块的命名空间中 26. 定义类方法:
类方法的首形参必须存在(建议命名为self),表示类实例本身(同java中的this) 27. 构造函数__init__
为类创建新实例时,__init__方法将自动执行一次 28. 析构函数__del__
检测到类实例不再被使用时自动调用以释放内存;另外也可以通过del语句手动调用,如
29. 类变量与对象变量: 定义在类中的变量都是类变量,类变量只有一份拷贝,保存在类的命名空间中,任何一个类实例对其进行修改都是改变它在其它实例中的值 对象变量只由某个实例独自拥有,它保存在各个对象的self变量中 一般地,类变量都是公有的(public);只有名称以双下划线为前缀的变量是私有的(private) 30. 继承:
允许多重继承 子类不会自动调用父类的构造函数,需手动调用,且调用方式与普通方法不同,如下:
31. 实例化(类似c++):
32. 方法调用:
调用时无需selfimport module
from module import function/class/attribute
class classname:
statements
class classname:
deffunctionname(self,
class classname:
def __init__(self,
class classname:
def __del__(self):
statements
del instance
class subclass(superclass):
statement
class subclass(superclass):
def __init__(self,
instance = classname(
instance.functionname(