欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python基本语法

程序员文章站 2022-03-30 21:14:21
1. 四种数值类型:整型,长整型(l),浮点数,复数((1 + 3j),j表示虚数部分) 2. 字符串: 单引号,双引号(单双引号等价,...

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__变量中,可以通过 .__doc__的方式得到

23. 模块导入:(模块就是若干函数与类的集合文件)

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, ):
        statements

类方法的首形参必须存在(建议命名为self),表示类实例本身(同java中的this)

27. 构造函数__init__

class classname:
   def __init__(self, ):
        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, ):
        superclass.__init__(self, )

31. 实例化(类似c++):

instance = classname()

32. 方法调用:

instance.functionname()

调用时无需self