一. 全局变量
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. 方法的选择
来源: http://www.bubuko.com/infodetail-2934756.html