IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 重拾python-6 -> 正文阅读

[Python知识库]重拾python-6

嵌套函数
定义在函数内部的函数
应用场景:

  1. 封装 - 数据隐藏 外部无法访问“嵌套函数”。
  2. 贯彻 DRY(Don’t Repeat Yourself) 原则 嵌套函数,可以让我们在函数内部避免重复代码。
  3. 闭包

nonlocal关键字
用来声明外层的局部变量,即需要修改外部函数的局部变量(访问无所谓)
global 用来声明全局变量。

LEGB规则
python在查找“名称”时,按照locacl->enclosed->global->bulit in

# str = "global"
def outer():
    # str = "outer"
    def inner():
        # str = "inner"
        print(str)
    inner()
outer()

面向对象

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))

s1 = Student("李四",99)
s1.say_score()	#李四的分数是:99
Student.say_score(s1)	#一样的效果,这是解释器执行的过程
print(dir(s1))  #获得对象的所有属性、方法
print(s1.__dir__()) #对象的属性字典
print(isinstance(s1,Student))   #判断对象是不是指定类型

类对象
类定义格式中,“class 类名:”。实际上,当解释器执行 class 语句时, 就会创建一个类对象。

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))

stu2 = Student
s1 = Student("张三",100)
s2 = stu2('王五',90)

s1.say_score()
s2.say_score()

实际上生成了一个变量名就是类名“Student”的对象。我们通过赋值给新变 量 Stu2,也能实现相关的调用。说明,确实创建了“类对象”。

类属性和类方法
类属性是从属于类对象的属性。可以被所有实例对象共享

class Student:
    company = "abc" #类属性
    count = 0   #类属性

    def __init__(self,name,score):
        self.name = name    #实例属性
        self.score = score
        Student.count += 1
    def say_score(self):    #实例方法
        print("我的公司是:",Student.company)
        print(self.name,'的分数是:',self.score)


s1 = Student("张三丰",88)
s1.say_score()
print('一共创建{0}个Student对象'.format(Student.count))

s2 = Student("李小龙",90)
s2.say_score()
print('一共创建{0}个Student对象'.format(Student.count))

执行结果:
我的公司是: abc
张三丰 的分数是: 88
一共创建1个Student对象
我的公司是: abc
李小龙 的分数是: 90
一共创建2个Student对象

类方法
类方法是从属于类对象的方法。通过装饰器@classmethod来定义
@classmethod
def 类方法名 (cls[,形参列表]):#cls表示类对象,就像self,不能省
函数体

class Student:
    company = "abc" #类属性
    count = 0   #类属性

    @classmethod    #类方法
    def printCompany(cls):
        print(cls.company)

    def __init__(self,name,score):
        self.name = name    #实例属性
        self.score = score
        Student.count += 1
    def say_score(self):    #实例方法
        print("我的公司是:",Student.company)
        print(self.name,'的分数是:',self.score)
s1 = Student("杨",100)
s1.printCompany()
s2 = Student("赵",99)
s2.printCompany()

静态方法
定义与“类对象”无关的方法,称为“静态方法”。
静态方法中访问实例属性和实例方法会导致错误

  • ** _del_方法(析构函数)和垃圾回收机制 **

__del__方法称为“析构方法”,用于实现对象被销毁时所需的操作。比如:释放对象 占用的资源,例如:打开的文件资源、网络连接等。

** _call_方法和可调用对象**
定义了_call_方法的对象,成为“可调用对象”。即该对象可以像函数一样调用。

class SalaryAccount:
    def __call__(self, salary):
        print("算工资啦。。。")
        yearSalary = 12*salary
        daySalary = salary//22.5
        hourSalary = daySalary//8

        return dict(yearSalary=yearSalary,monthSalary=salary,daySalary=daySalary, hourSalary = hourSalary)

s = SalaryAccount()
print(s(30000))

算工资啦。。。
{‘yearSalary’: 360000, ‘monthSalary’: 30000, ‘daySalary’: 1333.0, ‘hourSalary’: 166.0}

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 11:52:42  更:2021-09-01 11:53:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:55:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码