![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习日志
vivichen_chen
新时代农民工
展开
-
学习日记04-4_数据和自省
文章目录一.私有属性二.__slots__内置属性 # 自律 学习日记04-4 一.私有属性 1.私有属性:单下划线 和 双下划线 _attr2 、__attr3 2.私有属性:单下划线可以对外公开 3.私有属性:双下划线不对外公开 4.私有属性可以被继承 5.外部想要访问双斜杠的私有属性,可以利用__dict__查被加密的部分,如:案例a._Test__attr3 class Test: attr1=1000原创 2021-11-10 21:24:34 · 71 阅读 · 0 评论 -
学习日记04-3_面向对象三大特征
文章目录一.伪多态二.鸭子类型 # 自律 学习日记04-3 一.伪多态 1.面对对象三大特征 问题一:面向对象三大特征:封装,继承,多态 封装:将数据和方法放在一个类中就构成了封装。 继承:python中一个类可以继承于一个类也可以继承多个类,被继承的类叫父类(或者叫基类,base class) 多态:指的是一类事物有多种形态,一个抽象类有多个子类(因而多态的概念依赖于继承),不同的子类对象调用相同的方法,产生不同的执行结果,多态可以增加代码的灵活度是 问题二: 伪多态的实现方法:1.必须有继承,原创 2021-11-08 23:41:07 · 406 阅读 · 0 评论 -
学习日记04-2_面向对象-上下文管理器
文章目录一.上下文管理器 # 自律 学习日记04-2 一.上下文管理器 上下文管理器实现:如果在一个类中实现了__enter__,__exit__这两个方法,那么这个类就可以当做一个上下文管理器来用。 使用场景 当我们需要获取一个临时打开的资源,并在使用完毕后进行资源释放和异常处理 class MyOpen(object): def __init__(self,file_name,open_method): self.file_name=file_name原创 2021-11-07 22:27:26 · 216 阅读 · 0 评论 -
学习日记04-1_面向对象-魔术方法、单例模式
文章目录一.魔术方法 # 自律 学习日记04-1 一.魔术方法 __ new__方法和 __init__单例模式 init方法是初始化对象。 创建实例对象时,魔术方法__new__创建了对象,并且将对象返回给__init__,让__init__为我们初始化。 new方法一般不需要写,继承父类object有new方法。 知识点: 先有创建,才有初始化。即先__new__,而后__init__。 __new__必须要有返回值 单例模式就是利用new方法,初始化对象的原理来实现 单例模式原创 2021-11-06 22:02:25 · 89 阅读 · 0 评论 -
学习日记03-2_装饰器
文章目录一.装饰器 # 自律 学习日记03-2 一.装饰器 讲装饰器之前我们先来了解一下开放封闭原则(面向对象原则的核心) 开放封闭原则:软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。 装饰器的作用:在不更改原功能函数内部代码,并且不改变调用方法的情况下为原函数添加新的功能,装饰器其实就是闭包应用。 (一)无参装饰器: username='python' password='123456' def login(func): def fun():原创 2021-10-31 11:57:20 · 85 阅读 · 0 评论 -
学习日记03-1_闭包
文章目录一.闭包 # 自律 学习日记03-1 一.闭包 闭包条件: 1.函数中嵌套函数 2.外层函数返回内层嵌套函数名 3.内层嵌套函数有引用外层的一个非全局变量 闭包的作用: 1.实现对数据的锁定,提高代码稳定性 def func(): num=100 def count_book(): print(num) print('这是一个计算买书的函数') return count_book 调用闭包函数: res=func() r原创 2021-10-30 21:44:35 · 60 阅读 · 0 评论 -
学习日记02-5_偏函数
文章目录一.偏函数 # 自律 学习日记02-5 一.偏函数 什么是偏函数? 在python的内置模块functools提供了很多有用的功能,其中一个就是偏函数(partiai) 偏函数有什么作用? 当函数的参数个数太多,需要简化时,使用functools.partiai可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用的时更简单。 from functools import partial li1=[1,26,3,11,22,33] li2=[1,2,4,11,2,原创 2021-10-30 21:22:12 · 59 阅读 · 0 评论 -
学习日记02-4_匿名函数
文章目录一.匿名函数 # 自律 学习日记02-4 一.匿名函数 不用def去定义,也不用给函数起名字,用过lamda表达式来定义,这种函数叫匿名函数。 格式: lambda 参数:表达式 冒号后面的表达式相当于return里面的内容 下面2个函数是同一个意思 普通函数: def func(a,b): return a+b 匿名函数: lambda a,b:a+b 匿名函数传参: res=(lambda a,b:a+b)(1,2) print(res) >>>原创 2021-10-30 20:48:24 · 60 阅读 · 0 评论 -
学习日记02-3_内置函数
文章目录一.内置函数 # 自律 学习日记02-3 一.内置函数 函数原创 2021-10-30 17:10:11 · 64 阅读 · 0 评论 -
学习日记02-2_纯函数
文章目录一.纯函数 # 自律 学习日记02-2 一.纯函数 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。 变量都只是在函数作用域内获取,作为函数的参数传入 不会产生副作用,不会改变被传入的数据或者其他数据 相同的输入保证相同输出 不管在什么时候调用,传入的参数相同,返回的结果一定是一样的 1.这种随着a的变化,相同的输入有着不同的输出,就不是纯函数 a=50 def func(i): i=i+a return i vivi=f原创 2021-10-30 16:57:05 · 69 阅读 · 0 评论 -
学习日记02-1_递归函数
文章目录一.递归函数 # 自律 学习日记02-1 一.递归函数 简单的说就是函数自己调用自己。原创 2021-10-24 13:39:52 · 46 阅读 · 0 评论 -
学习日记01-4_generator生成器 and 迭代器Iterator
文章目录一.生成器generator二.迭代器Iterator(也是循环) # 前言 学习日记01-4 一.生成器generator 生成器表达式只有2种: 1.tu=(i for i in range(10))—({ }[] 是推导式) 2.yield, 通过yield自定生成器,yield只能用在函数里面,后面再学。。。 next()生成器取值 列表推导式 a=[i+1 for i in range(10)] print(a) >>>[1, 2, 3, 4, 5, 6, 7原创 2021-10-24 13:36:54 · 54 阅读 · 0 评论 -
学习日记01-3_推导式
文章目录一.推导式 # 前言 学习日记day01-3 一.推导式原创 2021-10-23 13:40:06 · 48 阅读 · 0 评论 -
学习日记01-2_字典和集合的原理和应用
文章目录一.字典Hash Map和集合Hash Set的原理和应用 # 前言 学习日记day01-2 一.字典Hash Map和集合Hash Set的原理和应用 dict与set实现原理是一样的,都是将实际的值放到list中,不同的在于hash函数操作的对象,对于dict,hash函数操作的是其key,而对于set是直接操作它的元素;dict则是创建了两个list,一个list放key,另一个list放value. 我们把实现set的方式叫做Hash Set,实现dict的方式叫做Hash Map(原创 2021-10-23 11:26:54 · 62 阅读 · 0 评论 -
学习日记01-1_元组和列表
文章目录一.元组和列表1. 元组和列表的性能分析2. 命名元组:collections模块中的namedtuple函数 # 时间 学习日记day01 一.元组和列表 1. 元组和列表的性能分析 计算创建元组和列表所需的时间:ipython中使用timeit 计算时间模块介绍:import timeit,timeit.timeit 元组 性能比 列表 好: import timeit def func(): for i in range(10): print(i)原创 2021-10-23 00:35:02 · 65 阅读 · 0 评论