python高级 基础回顾1

面向对象3大特性:
1.封装

一个功能一个函数,把相关函数封装成一个类对象。好处是代码可以复用,让代码更加清爽!

2.继承:

多个子类拥有相同的功能,然后把相同的函数放到父类中,通过子类的方式继承下来。好处是代码复用。

3.多态:

(1).必须要有继承;

(2).不同对象调用同一个函数,会有不同的表现形式;

(3).Python中的多态并不是严谨的多态,因为没有做类型检查!

python浅拷贝&深拷贝
. copy.copy 浅拷贝 。内存地址不变

import copy
list = [1, [4, 5, 6], 2, 3]
list1 = copy.copy(list)

print id(list)

print id(list[1])
print id(list1)
print id(list1[1])

list[2] = 100
list[1][0] = 44
print(list)
print(list1)

结果:
46925320
46912776
46967368
46912776
[1, [44, 5, 6], 100, 3]
[1, [44, 5, 6], 2, 3]

. copy.deepcopy 深拷贝 。内存地址改变

import copy
list = [1, [4, 5, 6], 2, 3]
list2 = copy.deepcopy(list)

print id(list)
print id(list[1])
print id(list2)
print id(list2[1])

list[2] = 100
list[1][0] = 44
print(list)
print(list2)

结果:
59508232
59495688
59509384
59508168
[1, [44, 5, 6], 100, 3]
[1, [4, 5, 6], 2, 3]

魔法方法:
它们是一些可以让你对类添加“魔法”的特殊方法。 它们经常是两个下划线包围来命名的(比如 init)。
几种常用的魔法方法:
(1). _ init _:用于初始化对象

(2). _ new _:用于创建对象

(3)._ call _:使对象变得可调用

(4). _ dict _:把类中的属性组成一个字典,属性名作为key, 属性值作为value

(5)._ class _:用于查看对象是由哪个类创建的

举个有个 ._ init _ 和. _ del _ 的例子:

from os.path import join //导入os模块

class FileObject:
    '''文件对象的装饰类,用来保证文件被删除时能够正确关闭。'''

    def __init__(self, filepath='~', filename='sample.txt'):
        # 使用读写模式打开filepath中的filename文件
        self.file = open(join(filepath, filename), 'r+')

    def __del__(self):
        self.file.close()
        del self.file

python三大神器:
1.装饰器
装饰器本质上是一个Python函数,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能。 装饰器的返回值也是一个函数的对象,它经常用于有切面需求的场景。 比如:插入日志、性能测试、事务处理、缓存、权限的校验等场景 有了装饰器就可以抽离出大量的与函数功能本身无关的雷同代码并发并继续使用
2.生成器
生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用 yield 语句。每次 next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值。
3.迭代器
迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个StopIteration异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值