03全局变量、函数、类
一. 全局变量
1) python不允许直接在函数内部改变全局变量,如果使用赋值语句,会在函数内部定义一个局部变量。
2) 如果希望修改全局变量的值,使用global声明一下变量即可
3) 一个py文件的结构
二. 函数
1. 赋值语句
1) 在函数内部,针对参数使用赋值语句,无论是可变还是不可变,都不会影响实参的数值。
2) 如果使用方法修改可变参数的值,实参的值会被改变。
def demo(num_list)
num_list.append(9)
print(num_list)
gl_list=[1,2,3]
demo(gl_list)
print(gl_list)
两个输出语句输出内容相同#[1,2,3,9]
3) 使用+=的时候,相当于使用了extend方法
2.缺省参数
1) 缺省参数(函数参数有默认值)必须定义在函数参数最后
def print_info(name,title,gender=True)
2) 如果函数有多个缺省参数,调用时想给具体的参数传递数据,可以gl_list.sort(reverse=true)
3. 多值参数
1) 一个函数想接受多个数据
*args可以接收元组,**kwargs可以接受字典
def demo(num,*nums,**person)
2) 拆包语法:在调用带有多值参数的函数时,如果希望:
* 将一个元组变量,直接传递给*args,可以在元组变量前,增加一个*
* 将一个字典变量,直接传递给*kwargs,可以在字典变量前,增加两个**
三.类
1. 语法格式
1)第一个参数必须是self(self相当于java的this)
2)定义一个对象: 对象名=类名()
对象是对类的引用
2. 初始化
1)___init__()初始化方法专门用来定义一个类具有的属性
2)定义对象时,就会自动调用初始化方法
3. 销毁
当对象从内存中被销毁时,会自动调用__del__()方法
4. __str__方法
希望使用print输出对象变量时,能够打印自定义内容(默认是打印类名及地址),就可以利用__str__方法
默认情况下:
格式:
5. 私有属性、私有方法
1) 定义私有属性之前名字要加两个下划线__biangliang
2) 定义私有方法之前名字要加两个下划线__fun()
3) 外界不能直接访问
4) 当使用_类名__私有属性/方法的格式,可以访问
四、继承
1.格式
class 类名(父名)
子类的对象和方法内部都不能直接访问父类的私有属性和私有方法
2. 重写
直接命名和父类相同的方法就可以,父类方法被覆盖,还是要调用原来父类的方法的话,用super().来调用
3. 多继承
1) Python支持一个子类继承多个父类:class 类名(父1,父2,….)
2) 如果不同的父类存在同名方法或属性,应该尽量避免使用多继承
4. 类属性和类方法
1)直接在类中定义,直接类名.来调用
2)类属性不记录具体对象的特征
3)也可以用对象名.来调用,但不推荐;如果使用对象名.属性=值 赋值语句,只会给对象添加一个属性
4)类方法
在类方法内部可以直接访问类属性或者调用其他的 类方法。
5. 静态方法
不需要调用实例属性或类属性
6. 方法的选择