1、列表相当于动态数组,元组相当于静态数组。
2、字典类型十分方便,在python直接以基本数据类型的方式实现。
3、变量不用定义类型,直接赋值即可。
4、python中没有自增运算符和自减运算符。
5、身份运算符is与==有区别,is比较两个变量的身份(内存地址)是否相等,==比较两个变量的值是否相等。
6、集合是无序的,所以{1,2,3}=={3,2,1}为true;元组和列表是有序的,所以(1,2.,3)==(3,2,1)为false。
7、python依靠缩进区分代码块,而不是{ }。
8、if-else语句、while语句中有冒号:。
9、只存在形式上的常量,将变量名全大写当作常量。
10、没有switch,可以用elif代替,相当于else if。
11、while可以与else搭配使用,for也可以与else搭配,但很少使用。
12、for循环的格式是for target_list in expression_list,循环时target_list会自增,其他语言中for(int i=0;i<=10;i++)可以用for x in range(0,10)代替。
13、range(0,10)表示0到9。range(0,10,2)将步长设为2,表示的是0、2、4、6、8。range(10,0,-1)表示的是10到1。
range()格式为range(start, stop[, step]),
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);
关于导入:
14、在一个文件夹里创建_init_.py,可以使python将该文件夹当作一个包。导入模块使用import,可以加上as关键词。
15、导入模块中单个或多个变量可以使用form … import …(此处可用通配符*)。导入某一模块时会执行该模块的所有代码。要注意避免循环导入。
16、每个模块有内置的变量:__name__是模块的完整名称,__package是模块所在的包的名称,__file__是模块的绝对路径,__doc__是该模块的注释内容。但是入口文件的__name__会被强制更改为__main__,入口文件也不属于任何包,file也会变成自身文件名而不是绝对路劲。
17、逻辑运算符and、or、not用于操作和返回布尔值,但非布尔类型的值也可以被认为是布尔值从而使用逻辑运算符,逻辑运算符也可以返回非布尔类型的值,等同于其他语言中先用if语句做判断,然后确定返回某一个值。int、float类型的值不为零则认为是True,字符串不为空也被认为是True。当操作值不是布尔值时,and与or的返回规律如下:先判断该表达式返回的布尔值是True还是False,再在操作值中寻找能转化为该布尔值的值,该值即为表达式真正返回的值;若两个操作值都符合条件,则and返回后面的值,or返回前面的值。如1 and 2返回2,1 or 2 返回1。Python中没有&与|。
关于函数:
18、python中定义函数时不用指定函数返回值的类型,通通用def。参数列表可以没有,列表中的变量也不需要定义类型。后面依然要带上冒号:。区分代码块依然靠缩进而非{}。
19、函数的返回结果可以是多个,可以使用return A,B。接受返回值时可以直接用多个变量接受,如下:
Number1=1
Number2=9
def fuc(x,y):
a=x*3
b=y*9
return a,b
result_a,result_b=fuc(Number1,Number2)
print(result_a,result_b)
20、序列解包是python一大特点。执行d=1,2,3,python会自动将d整合为一个序列(数组),变成[1,2,3]。再执行a,b,c=d, python会自动将序列解包,相当于a=1,b=2,c=3。
21、在调用函数时,可以在函数的参数列表中利用表达式赋值(顺序可以与定义函数时的形参顺序不同),如下:
def add(x,y):
return x+y
z=add(y=1,x=2)
22、在定义函数时,可以在参数列表中定义默认参数,例如def add(x,y=1):……,调用时只需要输入一个参数值即可。注意定义和调用时在顺序上默认参数必须在非默认参数的后面,调用时也可以用关键字参数修改默认值。
23、python中也遵循变量作用域的规则,但不存在块级作用域,因此for循环中定义的变量可以直接在循环外调用。
24、python中全局变量的作用域是所有模块。
关于类:
25、实例化一个类时不需要用new,如student=Student(),而非student= new Student()。
26、在类中,变量分为实例变量和类变量,方法分为实例方法、类方法和静态方法。
27、定义类时,定义类中的实例方法无论是否需要传参,参数列表都必须有self。定义类中的类方法无论是否需要传参,参数列表都必须有cls,并在方法的上一行加上@classmethod
28、构造函数的模板为def __init__(self):……, 构造函数的调用也是自动的,同样,在定义构造函数时修改参数列表,在构造函数给成员变量赋值,可以在实例化传入不同的初始值。如下:
class Student():
name=’’
age=0
def __init__(self,name,age):
self.name=name
self.age=age
student=Student(’abc’,18)
29、在定义实例方法时,访问实例变量用self.变量名,访问类变量用self.__class__.变量名;在类外,访问对象的实例变量用对象名.变量名,访问类变量用类名.变量名。
30、在定义类方法时,访问类变量用cls.变量名。在类外调用类方法时用类名.方法名或者对象名.方法名(建议前者)。
31、定义静态方法要在上一行加@staticmethod。
32、类中变量名和方法名以双下划线__开头则为私有的,否则为公开的(构造函数除外)。Python中没有public和private。
33、关于继承,在定义子类的括号里加入父类的名称即可继承。子类的构造函数需要显式地通过super调用父类的构造函数,如下:
class People():
def __init__(self, name, age):
self.name = name
self.age = age
def get_name(self):
print(self.name)
class Student(e2.People):
def __init__(self,school,name,age):
self.school=school
super(Student,self).__init__(name,age)
student1=Student('schoool1','avbabab',15)