1、缩进原则
-
Python使用缩进来区分不同的代码块,所以对缩进是严格要求。
-
物理行和逻辑行的概念
-
物理行:代码编辑器中显示的代码,每一行内容是一个物理行。
-
逻辑行:Python解释器对代码进行解释,一个语句是一个逻辑行。
-
可以使用";"号将多个逻辑行合并成一个物理行。
-
可以使用" \ "对一个逻辑行进行换行,书写为多个物理行。
-
-
缩进原则
-
逻辑行的“首行”需要顶格,即无缩进
-
相同逻辑层保持相同的缩进
-
":"标记一个新的逻辑层
-
缩进长度和缩进字符(2个空格或者4个空格或者一个tab)
-
2、函数
-
概念: 把重复利用的代码块封装起来,方便重复使用就是函数,函数分为you
-
语法:
# 定义函数 def 函数名称([参数列表]): 函数体 [return 值] # 调用函数 函数名称()
函数名:函数的名字,按照标识符命名规则命名 参数列表:小括号里面的参数,没有参数可以不写,有多个参数的时候中间用,(逗号)隔开 函数体:函数里要实现某个功能的代码 return 值:函数的返回值
注意:
-
用 [] (中括号) 括起来的可以使用,也可以省略不写
-
函数调用不可以放在函数定义的前面,因为再使用函数名调用函数时,要保证这个函数是已经存在的
-
无参函数
-
无返回值
def a(): print("Hello World!!!"); a(); # 函数的调用
-
有返回值
def c(): a = int(input("请输入a的值")); b = int(input("请输入b的值")); return a + b; print(c());
-
有参函数
-
无返回值
def b(a,b): # a和b为形参 print(a + b); b(2,3); # 实参
-
有返回值
def d(a,b): # a和b为形参 return a + b; print(d(2,3)); # 2和3为实参
注意:以上在调用函数时,要注意参数的传递顺序不能颠倒!
-
位置参数
def test(a,b,c,d) return a + b + c + d; print(test(1,2,3,4)); # 少传或者多传都会报错
-
关键传参
def test(a,b,c,d) return a + b + c + d; print(test(1,d=4,c=3,b=2));
-
默认值传参
def e(a,b,c=3): return a + b + c print(e(2,3)) # 当定义一个有默认值参数的函数时,有默认值的形参必须位于所有没默认值形参的后面
-
不定长参数
-
加一个*号 (元组 tuple)
def fun(a, *tupleb): print("a =",a) print("*tupleb = ",tupleb) fun(3,4,5,6) # 调用fun函数
-
加入两个**号 (字典 dict) 字典形式
-
-
函数调用必须在函数定义后面
3、类
①面向对象
-
面向对象编程(opp)是一种程序设计思想
-
面对对象术语简介
-
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
-
方法:类中定义的函数
-
类变量(属性):类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体(方法)之外。类变量通常不作为实例变量使用,类变量也称作属性
-
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据
-
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
-
实例变量:定义在init方法中的变量,只作用于当前实例的类
-
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待,以普通的类为基础建立专门的类对象
-
实例化:创建一个类的实例,类的具体对象。一个类可以实例化出无数个对象
-
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法
-
多态:对不同类的对象使用同样的操作
-
封装:对外部世界隐藏对象的工作细节
-
②类定义
-
使用关键字class进行定义,class后面紧跟类名
-
类定义与函数定义(def语句)一样:只有在被执行才会起作用
-
类包含属性和方法
-
一个对象的特征称为"属性"
-
一个对象的行为称为"方法"
-
属性分为类属性和实例属性
-
-
类定义的形式
-
类内部的函数定义通常具有一种特别形式的参数列表,这个特别形式就是第一个参数必须是self(self参数后面介绍)
-
方法是所有实例都共用的
-
Python类中的方法分为:实例方法、类方法、静态方法。
-
③实例对象
-
类对象的操作
-
实例化:使用instance_name = class_name()的方式实例化,实例化操作创建该类的实例(格式:实例对象名 = 类名(),实例对象名是我们自己定义的)
-
属性引用:使用class_name.attr_name的方式引用类属性(类名.属性名或类名.方法名)
-
注意:类只是一个抽象的概念,只有经过实例化后(获得实例对象),才会有意义,才能正常使用这个类中的属性和方法
-
使用class语句只能创建一个类,而无法创建类的实例对象,因此要想使用已创建好的类,还需要手动创建类的实例对象,创建类对象的过程又称为类的实例化
-
类在使用前必须先实例化,并将实例赋值给一个变量(得到实例对象)
-
④self参数
-
在定义实例变量、实例方法时的第一个参数必须是self
-
self在定义时需要定义,但是在调用时会自动传入(不需要手动传入了)
-
self代表的当前的实例对象本身,这样在调用实例方法等时Python就知道当前是哪个实例对象了
-
作用域
-
如果想要一个方法中的参数能在其他方法中使用,那么就可以使用"self."来将这个参数变成一个实例变量
-
name参数:在方法中使用了"self.name = name",这步就相当于是将这个name参数变成了一个实例变量,因此可以在所有方法中使用
-
age参数:age参数就没有使用name参数那样的写法,仅仅是在setname()方法中定义并使用,因此age参数就只能在setname()方法中使用,而不能在kick()方法中使用,即使他们是在同一个类中(经常遇到的是这种写法)
-