嵌套函数(内部函数)
嵌套函数:
在函数内部定义的函数!
nonlocal 关键字
nonlocal 用来声明外层的局部变量。
global 用来声明全局变量。
LEGB 规则
Python 在查找“名称”时,是按照LEGB 规则查找的:
Local-->Enclosed-->Global-->Built in
Local 指的就是函数或者类的方法内部
Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)
Global 指的是模块中的全局变量
Built in 指的是Python 为自己保留的特殊名称。
第 6 章(1) 面向对象初步
面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率。
面向过程:Procedure Oriented
面向对象:Object Oriented
class Student: #类名首字母大写
def __init__(self,name,score):#self必须为第一个
self.name = name
self.score = score
def say_score(self):
print("{0}的分数是:{1}".format(self.name,self.score))
s1 = Student("Winey",20)
s1.say_score()
Winey的分数是:20
init 构造方法和 new 方法
一个 Python 对象包含如下部分
- id(identity 识别码)
- type(对象类型)
- value(对象的值)
- 方法(method)
- 属性(attribute)
实例属性和实例方法
实例属性
- 实例属性一般在 init ()方法中通过如下代码定义: self.实例属性名 = 初始值
- 在本类的其他实例方法中,也是通过 self 进行访问: self.实例属性名
- 创建实例对象后,通过实例对象访问:
- obj01 = 类 名() #创建对象,调用 init ()初始化属性
- obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新加属性
- 其他操作:
- dir(obj)可以获得对象的所有属性、方法
- obj. dict__ 对象的属性字典
- pass 空语句
- isinstance(对象,类型) 判断“对象”是不是“指定类型”
类属性
类方法
类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod 来定义,格式如下: @classmethod
def 类方法名(cls [,形参列表]) :
函数体
静态方法
静态方法通过装饰器@staticmethod 来定义,格式如下:
@staticmethod
def 静态方法名([形参列表]) :
函数体
del 方法(析构函数)和垃圾回收机制
class Person:
def __del__ (self):
print("销毁对象:{0}".format(self))
p1 = Person()
p2 = Person()
del p2
print("程序结束")
销毁对象:<__main__.Person object at 0x00000179A3D4EFA0>
程序结束
销毁对象:<__main__.Person object at 0x00000179A3D4EFD0>
call 方法和可调用对象
class SalaryAccount:
"""计算工资"""
def __call__(self, name, salary):
print("发工资啦")
yearSalary = salary*12
daySalary = salary//22.5
hourSalary = daySalary//8
return dict(name=name,yearSalary=yearSalary,
monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)
a = SalaryAccount()
print(a("团子",30000))
发工资啦
{'name': '团子', 'yearSalary': 360000, 'monthSalary': 30000, 'daySalary': 1333.0, 'hourSalary': 166.0}
3357

被折叠的 条评论
为什么被折叠?



