2020-09-30 Python基础学习第七天笔记


2020-9-28 Day_7

1. 嵌套函数(内部函数)

函数里面套函数,内部函数只能在函数内访问。
一般在什么情况下使用嵌套函数?

  • 1.封装,隐藏数据
  • 2.避免函数内部重复代码。
  • 3.闭包

nonlocal关键字

如果内部函数需要’’修改’’外部函数变量的值,需要在内部函数对变量声明nonlocal.

变量查找顺序:内部函数,外部函数,全局变量,内置函数

一、面向对象编程

Python完全采用了面向对象的思想,将数据和操作数据相关的方法封装到对象中,例如:继承、多态、封装等。

1.类

类名首字母大写,多使用“驼峰原则”, 类体中我们可以定义属性和方法,属性用来描述数据,方法(即函数)用来描述数据相关的操作。

2.__init__构造方法

构造方法用于执行“实例对象的初始化工 作”,即对象创建后,初始化当前对象的相关属性,无返回值。

3.实例属性
class Student:

    def __init__(self,name,score):
        self.name = name
        self.score = score

    def say_score(self):
        print("{0}的成绩是:{1}".format(self.name,self.score))

s = Student("曹轶然",90)
s.say_score()
  1. 实例属性一般在__init__()方法中通过如下代码定义: self.实例属性名 = 初始值
  2. 在本类的其他实例方法中say_score,也是通过self 进行访问: self.实例属性名
  3. 创建实例对象后,通过实例对象访问:
    obj01 = 类名() #创建对象,调用__init__()初始化属性
    obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新加属性
    内存中访问过程如下图,a在栈中,其余在堆中。
    Student类型obj(模具)
    a
    地址:XXX

在这里插入图片描述

4.其他
  1. dir(obj)可以获得对象的所有属性、方法
  2. obj.dict 查询对象的属性字典
  3. pass 空语句
  4. isinstance(对象,类型) 判断“对象”是不是“指定类型
5.类的相关概念

1.类对象:’’class 类名:’’当解释器执行class 语句时, 就会创建一个类对象。
2.类属性:从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以被所有实例对象共享。例如:’’class 类名: 类变量名= 初始值’’ 在类中或者类的外面,我们可以通过:“类名.类变量名”来读写。
3.类方法:是从属于“类对象”的方法。类方法中访问实例属性和实例方法会导致错误,子类继承父类方法时,传入cls 是子类对象,而非父类对象。类方法通过装饰器@classmethod来定义,格式如下:

@classmethod 
def 类方法名(cls [,形参列表]) : 
	函数体

4.静态方法:Python中允许定义与“类对象”无关的方法,,需要通过“类调用”。静态方法中访问实例属性和实例方法会导致错误。静态方法通过装饰器@staticmethod来定义,格式如下:

@staticmethod 
def 静态方法名([形参列表]) : 
	函数体

5.__del__方法(析构函数)和垃圾回收机制
Python实现自动的垃圾回收,当对象没有被引用时(引用计数为 0),由垃圾回收器调用__del__方法。
6. __call__方法和可调用对象

class SalaryAccount:

    def __call__(self, salary):
        yearSalary = salary * 12
        monthSalary = salary
        daySalary =  salary//22.5
        hourSalary = daySalary//8
        return dict(yearSalary=yearSalary,monthSalary = salary,daySalary = daySalary,hourSalary = hourSalary)

s = SalaryAccount()

print(s(30000))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值