Python个人学习心得(更新中)

本文分享了Python编程的一些核心概念,包括动态数组与静态数组的对比,字典的便捷性,变量的动态类型,以及Python特有的is和==的区别。还介绍了Python的缩进规则,逻辑运算符的特性和函数、类的定义与使用方法,强调了Python在函数返回、序列解包、类方法和静态方法等方面的特点。
摘要由CSDN通过智能技术生成

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)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值