算法方向-大数据分析与挖掘学习笔记(7)

测试嵌套函数的定义

#测试嵌套函数的定义

def outer():
    print('Outer is running')

    def inner():
        print('Inner is running')

    inner()

outer()


print('*'*10)
def printName(IsChinese,name,familyname):
    def inner_print(a,b):
        print('{0} {1}'.format(a,b))

    if IsChinese:
        inner_print(familyname,name)
    else:
        inner_print(name,familyname)

printName(True,'小七','高')
printName(False,'Ivanka','Trump')

运行结果:

Outer is running
Inner is running
**********
高 小七
Ivanka Trump

测试nonlocal、global的用法

#测试nonlocal、global的用法
a = 100

def outer():
    b = 10

    def inner():
        nonlocal b
        print('inner b:',b)
        b = 20

        global a
        a = 1000

    inner()
    print('outer b:',b)

outer()
print('a:',a)

运行结果:

inner b: 10
outer b: 20
a: 1000

class Student:

    def __init__(self,name,score):  #构造方法
        self.name = name
        self.score = score

    def say_score(self):    #self必须位于第一个参数
        print('{0}的分数是:{1}'.format(self.name,self.score))

s1 = Student('gaoqi',18)
s1.say_score()

s1.age = 32
s1.salary = 3000

print(s1.salary)

s2 = Student('高希希',100)

s2.say_score()

Student.say_score(s2)

print(dir(s2))

print(s2.__dict__)


class Man:
    pass

print(isinstance(s2,Man))

运行结果:

gaoqi的分数是:18
3000
高希希的分数是:100
高希希的分数是:100
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name', 'say_score', 'score']
{'name': '高希希', 'score': 100}
False

面向对象编程OOP

class Student:
    company = 'SXT'     #类属性
    count = 0

    def __init__(self,name,score):
        self.name = name    #实例属性
        self.score = score
        Student.count = Student.count + 1

    def say_score(self):
        print('我的公司是:',Student.company)
        print(self.name,'的分数是:',self.score)

s1 = Student('张三',80)       #s1是实例对象,会自动调用__init__()方法
s1.say_score()

s2 = Student('高崎',90)
print('一共创建{0}个Student对象'.format(Student.count))

运行结果:

我的公司是: SXT
张三 的分数是: 80
一共创建2个Student对象

测试类方法、静态方法

class Student:
    company = 'SXT'

    

    @classmethod
    def printCompany(cls):
        print(cls.company)

Student.printCompany()

class Student2:
    company = 'SXT'
    @staticmethod
    def add(a,b):
        print('{0}+{1}={2}'.format(a,b,(a+b)))
        return a+b

Student2.add(20,30)

运行结果:

SXT
20+30=50

析构函数

#析构函数
class Person:

    def __del__(self):
        print('销毁对象{0}'.format(self))

p1 = Person()
p2 = Person()
print(p1)
print(p2)
del p2
print('程序结束')
# print(p1)
# print(p2)

运行结果:

<__main__.Person object at 0x000001D6D8050BA8>
<__main__.Person object at 0x000001D6D8069DA0>
销毁对象<__main__.Person object at 0x000001D6D8069DA0>
程序结束
销毁对象<__main__.Person object at 0x000001D6D8050BA8>

测试可调用方法__call__()

#测试可调用方法__call__()

class SalaryAccount:
    '''工资计算类'''

    def __call__(self,salary):
        print('算工资啦...')
        yearSalary = salary*12
        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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值