•        Python : 3.7.3
  •          OS : Ubuntu 18.04.2 LTS
  •         IDE : pycharm-community-2019.1.3
  •       Conda : 4.7.5
  •    typesetting : Markdown

code

"""
@Author : 行初心
@Date : 2019/7/2
@Blog : www.cnblogs.com/xingchuxin
@Gitee : gitee.com/zhichengjiu
""" def main():
print(hash(1234556)) print("---") print(hash("Traditional")) print("---") print(hash((1, 2, 3, 4))) # list
print(hash([1, 2])) if __name__ == '__main__':
main()

result

/home/coder/anaconda3/envs/py37/bin/python /home/coder/PycharmProjects/Base/demo.py
Traceback (most recent call last):
File "/home/coder/PycharmProjects/Base/demo.py", line 25, in <module>
main()
File "/home/coder/PycharmProjects/Base/demo.py", line 21, in main
print(hash([1, 2]))
TypeError: unhashable type: 'list'
1234556
---
-4302454725068395101
---
485696759010151909 Process finished with exit code 1

more_knowle

  • python中 hash(o) 接收一个 不可变类型 的数据作为参数,提取数据的特征码

    特征码是整数
  • 相同的数据 -> 相同的结果
  • 运行 print(hash("Traditional")) 多次,可以得到不同的结果。想要了解这个现象背后的原因,需要学习hash运算的原理。
  • 在运行时发现了一个现象:相同字符串在同一次运行时的哈希值是相同的,但是不同次运行的哈希值不同。这是由于Python的字符串hash算法有一个启动时随机生成secret prefix/suffix的机制,存在随机化现象:对同一个字符串输入,不同解释器进程得到的hash结果可能不同。因此当需要做可重现可跨进程保持一致性的hash,需要用到hashlib模块。[1]

reference

source_code

def hash(*args, **kwargs): # real signature unknown
"""
Return the hash value for the given object. Two objects that compare equal must also have the same hash value, but the
reverse is not necessarily true.
"""
pass

resource

  • [文档 - English] docs.python.org/3
  • [文档 - 中文] docs.python.org/zh-cn/3
  • [规范] www.python.org/dev/peps/pep-0008
  • [规范] zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
  • [源码] www.python.org/downloads/source
  • [ PEP ] www.python.org/dev/peps
  • [平台] www.cnblogs.com
  • [平台] gitee.com


Python具有开源、跨平台、解释型、交互式等特性,值得学习。

Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。

代码的书写要遵守规范,这样有助于沟通和理解。

每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

最新文章

  1. SQL Server中的锁
  2. V8 data struct
  3. svn更改默认服务启动目录
  4. 洗衣店专用手持智能POS PDA手持设备 上门收衣 现场刷卡 打印票据 开单系统
  5. javascript格式化指定的日期对象
  6. X窗口系统名词解释
  7. 《Javascript语言精粹》 读书笔记
  8. PAT 团体程序设计天梯赛-练习集 L1-007. 念数字
  9. Linux格式化硬盘 常用命令小记
  10. #Laravel 笔记# 多语言化 App::setLocale() 持久化。
  11. 使用 Prometheus + Grafana 对 Kubernetes 进行性能监控的实践
  12. .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
  13. SpringBoot初步
  14. ABP领域层知识回顾之---工作单元
  15. 如何修改hosts文件
  16. (77)Wangdao.com第十五天_JavaScript 用于数据交换的文本格式 JSON 对象
  17. vs2017离线安装且安装包不占用C盘空间
  18. unique(未完成)
  19. 第一章 JS基础
  20. OO第三次课程总结分析

热门文章

  1. 神经网络MNIST数据集分类tensorboard
  2. mysql 两张表字段模糊匹配--字符串拼接函数
  3. LG3768 简单的数学题
  4. C# 6.0 中的新增功能(.NET Framework 4.6 与 Visual Studio 2015 )
  5. 09 webpack的介绍
  6. 使用unsafe.Pointer将结构体转为[]byte
  7. CSS3中的display:grid网格布局介绍
  8. 批量把pod实例调成0
  9. WinDbg常用命令系列---查看线程调用栈命令K*简介
  10. NTSTATUS