我认为每个人的用法对我来说太主观了,所以我只是坚持数字。

我比较了创build和更改字典中的variables,new_style类和new_style类带槽的时间。

这是我用来testing它的代码(这有点乱,但它做的工作。)

import timeit class Foo(object): def __init__(self): self.foo1 = 'test' self.foo2 = 'test' self.foo3 = 'test' def create_dict(): foo_dict = {} foo_dict['foo1'] = 'test' foo_dict['foo2'] = 'test' foo_dict['foo3'] = 'test' return foo_dict class Bar(object): __slots__ = ['foo1', 'foo2', 'foo3'] def __init__(self): self.foo1 = 'test' self.foo2 = 'test' self.foo3 = 'test' tmit = timeit.timeit print 'Creating...\n' print 'Dict: ' + str(tmit('create_dict()', 'from __main__ import create_dict')) print 'Class: ' + str(tmit('Foo()', 'from __main__ import Foo')) print 'Class with slots: ' + str(tmit('Bar()', 'from __main__ import Bar')) print '\nChanging a variable...\n' print 'Dict: ' + str((tmit('create_dict()[\'foo3\'] = "Changed"', 'from __main__ import create_dict') - tmit('create_dict()', 'from __main__ import create_dict'))) print 'Class: ' + str((tmit('Foo().foo3 = "Changed"', 'from __main__ import Foo') - tmit('Foo()', 'from __main__ import Foo'))) print 'Class with slots: ' + str((tmit('Bar().foo3 = "Changed"', 'from __main__ import Bar') - tmit('Bar()', 'from __main__ import Bar')))

这里是输出…

创build…

Dict: 0.817466186345 Class: 1.60829183597 Class_with_slots: 1.28776730003

更改variables…

Dict: 0.0735140918748 Class: 0.111714198313 Class_with_slots: 0.10618612142

所以,如果你只是存储variables,你需要速度,并不需要你做很多计算,我推荐使用一个字典(你总是可以做一个看起来像一个方法的函数)。 但是,如果你确实需要类,记住 – 总是使用__ slots __ 。

注意:

我用new_style和old_style类testing了'Class'。 事实certificate,old_style类创build速度较快,但修改速度较慢(如果您在紧密的循环中创build大量类,则不会太多但意义重大(提示:您做错了))。

另外,由于我的老旧速度很慢,因此在计算机上创build和更改variables的时间可能会有所不同。 确保你自己testing看到“真实”的结果。

编辑:

我后来testing了namedtuple:我不能修改它,但创build10000个样本(或类似的东西)花了1.4秒,所以字典确实是最快的。

如果我改变字典function ,包括键和值,并返回字典,而不是包含字典的variables,当我创build它给我0.65而不是0.8秒。

class Foo(dict): pass

创build就像一个有插槽的类,改变variables是最慢的(0.17秒),所以不要使用这些类 。 去一个字典(速度)或从对象派生的类('语法糖果')

python中的字典和类的区别_Python:我应该使用类还是字典?相关推荐

  1. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  2. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  3. python中的方法和函数的区别_Python中函数和方法的区别

    在Python中函数和方法是有区别的. 区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中. 区别二定义的方式: 1.函数定义的方式 def关键字  然后接函数名 再是 ...

  4. python中协程与函数的区别_python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...

  5. python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...

    我正在使用setup.py安装包: python setup.py install 我正在安装的软件包中的__init__.py包含一些软件包级别检查,其中一个检查settings.py中是否有可用的 ...

  6. python中协程与函数的区别_python协程和异步IO

    1.并发.并行.同步.异步.阻塞.非阻塞 并发:是指在同一个时间段内,有几个程序都处于启动运行到运行结束之间 并行:在同一个时间点上,有几个程序同时运行 同步:当一个同步操作发出去后,调用者一直等待返 ...

  7. python中del和pop有什么区别_Python列表删除元素del、pop()和remove()的区别小结

    前言 在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释 del语句 del语句可以删除任何位置处的列表元素, 若知道某元素在列表 ...

  8. python函数和类的区别_Python中类中的方法还有区别?

    上一篇,我们讲到Python类中的属性是有区别的,爱思考的小伙伴们可能就会问了,Python中的方法是不是也有区别呢?是的,而且Python中的方法区别更大,让我们来看看吧~ Python类中的三种方 ...

  9. Python中值传递和引用传递区别

    原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...

  10. Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...

    Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...

最新文章

  1. Cell子刊:16s分析之FishTaco分析
  2. elasticsearch批量操作
  3. RabbitMQ从安装到使用
  4. linux安装篇之mongodb安装及服务自启动配置
  5. ubuntu mysql 中午_Ubuntu更改MySQL字符集UTF-8,正确显示中文
  6. [深度学习] 自然语言处理 --- 文本分类模型总结
  7. 枚举类型的用法 很不错的定义不同类型的工具
  8. 附件计算器中的MC、MR、MS、M+作用
  9. python os
  10. MySQL 5.5 使用 Event定期自动维护/执行Procedure
  11. abaqus汉化后有结果界面中有中文乱码
  12. Linux邮件服务器怎么用?
  13. 一文看懂网卡驱动原理及移植方法
  14. png批量转换成jpg,png批量转jpg方法
  15. 从Sbo 2005B维护助手软件说说SBO人的四重境界
  16. sis最新ip地址2020_2020秋招经验分享
  17. 在matlab中建模基准地形和山峰
  18. STM32 系统配置的时钟获取方式
  19. 如何部署超级签名分发平台系统?
  20. 午餐不知道吃什么?用 Python 爬美团App评论选餐!

热门文章

  1. 计算机竞赛满分学霸,湖北学霸斩获信息学奥赛金牌 将直接保送清华大学 立志做一名计算机科学家...
  2. python画离散点_python画散点图
  3. c语言割线法解非线性方程,用割线法解非线性方程组.doc
  4. 鸿蒙app迁移,余承东宣布:明年3月P40首发鸿蒙系统!主流App将迁移鸿蒙
  5. 微型计算机接口期末,微机接口技术期末复习题及其答案 (2)
  6. Elasticsearch 单机安装
  7. Java JDBC DriverManager类
  8. c++ 友元函数,友元类
  9. 前端-requests-flask对应关系 restful
  10. win7查看tomcat端口_想研究Tomcat性能调优,看这篇就够了