第七章

嵌套函数(内部函数):
在函数内部定义的函数
定义在一个函数中,同时也在这个函数中调用,出了函数就无法使用
def outer():
print(“outer runing”)

def inner01():
	print("inner01 runing")
inner01()	#只能在outer内部使用

outer()
在这里插入图片描述
好处:
1.封装-数据隐藏
外部无法访问嵌套函数
2.贯彻DRY(don‘t repeat yourself)原则
嵌套函数可以让我们在函数内部避免重复的代码
3.闭包

关键字
nonlocal:用来声明外层的局部变量
类似于global,global用来声明全局变量

def outer():
b = 10
def inner():
print("inner:"b) #可以使用在外部的变量,但是不能修改
inner()
outer

a = 100
def outer():
b = 10
def inner():
nonlocal b #声明外部函数的局部变量
print("inner:"b)
b = 20

	global a		#global,声明全局变量
	a = 1000
inner()
print("outer:",b)

outer
print(“a:”,a)
10
20
1000

LEGB规则:
查找变量名字的时候,是按照LEGB的规则查找的
Local——》Enclosed——》Global——》Built in
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200517190313425.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NTE5MDM2,size_16,color_FFFFFF,t_70

面向对象

python支持:面向过程,面向对象,函数式编程
在这里插入图片描述

类的定义:
类好比是一个模具
在这里插入图片描述

定义类(类名首字母大写):
def init(self):,是一个特殊的方法(其实就是一个函数,叫他构造函数),下面定义类的属性,用这个类实例化的对象都会具有这个属性,比如下面第一个类Sturent1,实例化的对象都会是名字叫做zhangsan,年龄22岁。如果不想固定,就在方法里面增加参数。同Student2.注意的是,self必须是第一个参数。self是创建对象的本身。
class Student1:
def init(self):
self.name = “zhangsan”
self.age = 22

class Student2:
def init(self,name,age):
self.name = name #不加self就是形参,加了self就是这个属性,很容易区别
self.age = age
def sat_score(self):
print({0}的年龄是{1}.format(self.name,self.age))
sl = Sturent2(“zhangsan”,19)
sl,say_score()

在这里插入图片描述
new()方法,用于创建对象,但是我们一般不用重新定义这个方法,init就是给实例属性赋值(初始化对象),所以构造方法的作用:初始化对象。

一个puthon对象包含如下部分:
1.id
2.type
3.value
1.属性
2.方法

实例属性

在这里插入图片描述

在这里插入图片描述

实例方法

在这里插入图片描述和定义函数很像,区别就是参数self。调用的时候,不能给self也不需要给self传参数,解释器自动传。
在这里插入图片描述
其他操作:
dir(obj)可以获得对象的所有属性,方法。
obj.dict 对象的属性字典
pass空语句
isinstance(对象,类型),判断对象是不是指定类型

类对象

class,实际上当解释器执行class语句的时候,就会常见一个类对象。
类的信息也是需要对象来保存的
type:磨具类,class属于type
在这里插入图片描述

类属性和类方法

类属性:
从属于类对象的属性,或者称为类变量
在这里插入图片描述

在这里插入图片描述

类方法:
从属于类对象的方法,格式:@classmthod,def类方法名:cls[,形参列表]
在这里插入图片描述
在这里插入图片描述

静态方法:
作用:与类对象无关的方法称为静态方法
格式:
@staticmethod
def 静态方法名([形式参数])

__del__方法(析构函数)

在这里插入图片描述

__call__方法

定义了__call__方法的对象,称为可调用对象,即这个对象可以和函数一样被调用
a = 30
b = 50
c = a +b
d = a.add(b)
其实什么都是对象,写+只是为了方便实用
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值