2020-11-11

Python基础知识(7)

嵌套函数

1.封装——数据隐藏,外部无法访问嵌套函数

2.嵌套函数可以让我们在函数中避免重复代码

3.闭包

nonlocal、global关键词

内层函数使用外部函数的局部变量时需要用nonlocal来声明

函数使用全局变量时需要使用global来声明

a = 100     #全局变量
def outer():
    b = 200
    def inner():
        nonlocal b
        print('inner b:', b)
        b = 20000

        global a
        a = 10000
    inner()
    print('outer b:{}'.format(b))
outer()
print(a)



输出:
inner b: 200
outer b:20000
10000

LEGB规则

python在查找名称时,按照函数内部—嵌套函数—全局变量—python为自己保留的特殊名称

类:

类将行为和状态打包在一起

如果把对象比作是饼干,类就是制造饼干的模具

类名必须符合‘标识符’原则,首字母大写,多个单词使用驼峰原则

属性用来描述数据,方法用来描述这些数据相关的操作

构造函数 init( )

要点一、名称固定,必须为__init__()

要点二、第一个参数必须为self。self指的是刚刚创建好的实例对象

要点三、构造函数通常用来初始化实例对象的实例属性

通过类名()来调用构造函数,调用后,将创建好的对象返回给相应的变量

class Student:
    company = '尚学堂'
    count = 0    #类属性
    def __init__(self, name, score):
        self.name = name    #实例属性
        self.score = score
        Student.count += 1
    def say_score(self):        #实例方法
        print('{}的成绩为:{}'.format(self.name, self.score))

s1 = Student('高琦', 80)    #s1是实例对象,直接调用__init__函数
s1.say_score()
s2 = Student('张三',80)
s3 = Student('李四',60)
print('一共有{}个学生的成绩'.format(Student.count))


输出为:
高琦的成绩为:80
一共有3个学生的成绩

上述代码的运行逻辑图:在这里插入图片描述

实例属性

实例属性:从属于实例对象的属性

self.实例属性名 来调用

创建实例对象后,通过实例对象访问

obj01 = 类名() #创建对象,调用__init__初始化属性

obj01.实例属性名 = 值 #可以给已有属性赋值,也可以新加属性并赋值

类对象、类属性、类方法

类也可以作为对象

类方法通过装饰器 @classmethod来定义

格式为:

@classmethod

def 类方法名(形参列表):

     函数体

__call__方法

定义了call方法的对象,称之为可调用对象,即该对象一样可以被调用。

class SalaryAccount:
    def __call__(self, salary):
        yearsalary = salary*12
        daysalary = salary//22.5
        return dict(yearsalary=yearsalary, daysalary=daysalary)
s = SalaryAccount()
print(s(30000))



输出为:
{'yearsalary': 360000, 'daysalary': 1333.0}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值