嵌套函数(内部函数)
在函数内部定义的函数成为嵌套函数,只能针对在外部函数中使用,可以将细节存储在内部函数
def outer():
print("outer running")
def inner():
print("inner runnning")
inner()
outer()
Nonlocal:用来声明外层的局部变量
Gobal:用来声明全局变量
legb规则
调用顺序:
l: local 局部作用域
e:enclosed 嵌套函数
g:global 模块中的全局变量
b:built in 内部函数
面向对象
面向对象编程将数据和操作对象数据封装到对象中,适合大规模程序,例如如何造车
面向过程
更加关注过程,适合简单不需要协作的事物,小规模程序,例如如何开车
对象的进化
1.简单数据:简单数字
2.数组:同类型数据
3.结构体:不同类型数据
4.对象:不同类型数据,方法
构造函数
语句:__init__() 固定写法,初始化对象而不是创建对象
实例属性:
也成为实例变量,从属于实例对象
实例方法:
需要self,其他和定义函数一样,调用时不需要给self传参,操作实例属性
特殊语句:
1.dir(obj)可以获得对象的所有属性,方法
2.obj.__dict__ 对象的属性字典
3.pass 空语句
4.isinstance(对象,类型) 判断对象是不是指定类型
类对象:
定义格式为:class+类名
类对象都是通过type对象产生的
在类对象下创立的叫做类属性
类方法:
1.@classmethod 必须位于方法上一行
2.第一个cls必须有;cls特质类对象本身
静态方法
定义类对象无关的方法
1.@staticmethod 必须位于方法上一行
2.格式:类名.静态方法名(参数列表)
类方法和静态方法中不能调用实例变量
析构函数和垃圾回收机制
语句格式为:__del__,当对象没有被引用时,由垃圾回收机制调用__del__
可调用对象:
定义了_call_方法的对象,即对象就能像函数一样调用