python学习总结----内置函数及数据持久化
抽象基类(了解)- 说明:- 抽象基类就是为了统一接口而存在的- 它不能进行实例化- 继承自抽象类的子类必须实现抽象基类的抽象方法
- 示例:from abc import ABC, abstractmethod# 抽象基类class Animal(ABC):# 定义抽象方法:规定接口@abstractmethoddef run(self):pass   # 抽象基类不能实例化# a = Animal()class Cat(Animal):# 必须实现基类中规定的抽象方法,才能实例化def run(self):print('猫喜欢走猫步')c = Cat()内置函数- 构造和析构__init__、__del__
- 属性操作    __getattr__、__setattr__、__delattr__
- 支持字典操作__getitem__、__setitem__、__delitem__
- 像函数一样调用__call__
- 打印输出__str__
- 对象的字符串表示class Person:def __init__(self, name, age):self.name = nameself.age = age# print/str都会自动触发该方法def __str__(self):print('__str__')return '姓名:{},年龄:{}'.format(self.name, self.age)# 通常用来返回对象的字符串表示形式# 调用repr方法时会自动触发def __repr__(self):return 'Person("{}", {})'.format(self.name, self.age)xiaoming = Person('小明', 20)# print(xiaoming)# s = str(xiaoming)# print(s)r = repr(xiaoming)print(r)# eval:可以指向有效python字符串x = eval(r)print(x)print(type(x))       - 算术运算符重载- 示例class Number:def __init__(self, num):self.num = numdef __str__(self):return str(self.num)# 对象出现在'+'的左边时自动触发def __add__(self, other):print('__add__')return self.num + other# 对象出现在'+'的右边时自动触发def __radd__(self, other):return self.num + other# +=运算时会自动触发,若没有则会调用__add__方法def __iadd__(self, other):return Number(self.num + other)n = Number(10)# ret = n + 10# ret = 20 + nn += 50 # n = n + 50print(n)- 自行测试加法:__add__、__radd__、__iadd__减法:__sub__、__rsub__、__isub__乘法:__mul__、__rmul__、__imul__除法:__truediv__、__rtruediv__、__itruediv__求余:__mod__、__rmod__、__imod__
- 关系运算符重载class Number:def __init__(self, num):self.num = num# 大于:>def __gt__(self, other):return self.num > other# 小于:<def __lt__(self, other):return self.num < other# 等于,==会触发,不实现__ne__时,!=也会触发该方法def __eq__(self, other):print('__eq__')return self.num == other# 大于等于:>=def __ge__(self, other):return self.num >= other# 小于等于:<=def __le__(self, other):return self.num <= other# 不等于:!=def __ne__(self, other):return self.num != othern = Number(20) print(n > 10)print(n < 10)print(n != 10)内存管理- 引用计数- python中所有的变量都是通过对象完成的,对象的管理时通过引用计数解决的。- 当创建一个对象赋值给一个变量时,引用为1,当多一个变量指向对象时,计数值加1;当少一个变量指向对象时,计数值减1,减到0时调用对象__del__方法,释放对象相关资源- 不可变变量的引用计数值是没有意义的- 通过函数sys.getrefcount(lt)可以查看对象的引用计数,该函数本身会对对象的引用计数加1
- 函数传参- 对不可变的变量来说,传递的值,函数中不会改变传递进来的变量。- 对于可变对象、自定义对象来说,传递的是引用,函数中操作的就是原对象。- 示例:def test(n):n += 10num = 2test(num)print(num)def test2(lt):lt[0] = 20lt = [1, 2, 3]test2(lt)print(lt)- 深浅拷贝- 不可变的类型不存在深浅拷贝- 浅拷贝只会拷贝对象本身,其中的元素只会增加引用- 深拷贝不但会拷贝对象本身,还会对其中的元素进行拷贝- 示例:  import copylt = [[1, 11], 2, 3]# lt2 = lt# 浅拷贝:只拷贝对象本身,里面的元素只增加引用# lt2 = lt.copy()# 浅拷贝# lt2 = copy.copy(lt)# 深拷贝:拷贝对象本身,对象中的元素也进行拷贝lt2 = copy.deepcopy(lt)lt2[0] = 100print(id(lt))print(id(lt2))# 判断是否是同一对象的引用print(lt is lt2)print(lt)数据持久化存储- 说明:持久化存储方案,普通文件、数据库、序列化
- 示例:import pickleclass Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return 'name:{},age:{}'.format(self.name, self.age)xiaoming = Person('xiaoming', 20)# 序列化,会将对象转换为bytes# s = pickle.dumps(xiaoming)# print(s)# 从字节流中加载转换为对象# xm = pickle.loads(s)# print(xm)# print(type(xm))# 直接保存到文件中# fp = open('data.txt', 'wb')# pickle.dump(xiaoming, fp)# 从文件中读取对象fp = open('data.txt', 'rb')xm = pickle.load(fp)print(xm)print(type(xm))

posted on 2018-09-10 10:57 liangzhiwen 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lzw19951020/p/9650024.html

python学习总结----内置函数及数据持久化相关推荐

  1. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  2. 【Python学习】内置函数(不断更新)

    关于常用在for循环中的range函数 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数说明: s ...

  3. python学习之- 内置函数

    内置方法:1:abs():取绝对值2:all():当可迭代对象里所有均为真时结果为真. all([1,2,3])3:any():当可迭代对象里任意一个数据为真结果即为真.any([0,1,2])4:a ...

  4. python之路——内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  5. python提供的内置函数有哪些_python内置函数介绍

    内置函数,一般都是因为使用频率比较频繁,所以通过内置函数的形式提供出来.对内置函数通过分类分析,基本的数据操作有数学运算.逻辑操作.集合操作.字符串操作等. 说起我正式了解内置函数之前,接触到的是la ...

  6. Python两个内置函数——locals 和globals

    python作用域 http://tgstdj.blog.163.com/blog/static/748200402012419114428813/ 有两种类型的作用域--类的变量和对象的变量. 类的 ...

  7. python 两个内置函数——locals 和globals(名字空间)批量以自定义变量名创建对象

    文章目录 locals 和globals(名字空间)简介 1.局部变量函数locals例子(locals 返回一个名字/值对的字典) 批量创建对象 示例1 示例2 函数内 类内 2.全局变量函数glo ...

  8. 初学者python笔记(内置函数_2)

    这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的.同样都是介绍Python中那些常用内置函数的. max()和min()的高级用法 我们都知道,max():取最大值,min():取最 ...

  9. python中如何调用函数_如何调用python中的内置函数?(实例解析)

    对于第一次接触到python这门编程语言的朋友来说,刚刚开始学习python编程的时候对于python函数调用这一方面的了解比较少,在这篇文章之中我们就来了解一下python怎么调用函数. Pytho ...

最新文章

  1. python3 编写守护进程程序思路
  2. vc新线程、类外控制EDIT控件
  3. shell排序-c语言
  4. Java里的按值传递与引用传递
  5. 1880: wjw的火车站(栈)
  6. java 管理员命令模式_java中命令模式详解和使用方法
  7. .NET Core 3.0之深入源码理解ObjectPool(二)
  8. springmvc的主要功能_Spring MVC入门
  9. python栈应用_栈应用之 后缀表达式计算 (python 版)
  10. 级联MobileNet-V2实现CelebA人脸关键点检测(附训练源码)
  11. chrome浏览器版本和driver版本对照表
  12. ubantu下部署python
  13. Pycharm 更换皮肤和壁纸
  14. Java获取汉字的拼音
  15. word html 无批注,Word怎么修改成无批注状态
  16. java判断一个字符串是否是数字(包括正数,负数,小数)
  17. Java中Double与BigDecimal的互转,Date和LocalDateTime互转
  18. mysql嵌套查询;去重,分页综合查询
  19. 闭锁java_实例讲解Java并发编程之闭锁
  20. 各种各样的分布函数-Γ分布

热门文章

  1. 随机生成彩票的shell脚本
  2. [转]Microsoft SQL Server 自定义函数整理大全
  3. ASP.NET Literal控件用法
  4. ASP.NET MVC Preview 2新特性
  5. SilverLight是什么?(来自Csdn)
  6. CVPR 2020 论文大盘点-动作检测与动作分割篇
  7. python教程-做个淘宝双十一满减攻略
  8. MIT“35岁以下科技创新35人”榜单揭晓
  9. 英伟达RTX 3080值不值得抢?在TensorFlow上训练了卷积网络
  10. 招聘 | 大疆算法类未来大咖招聘