zoukankan      html  css  js  c++  java
  • Python3基础 内置函数 hash

    •        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的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
    代码的书写要遵守规范,这样有助于沟通和理解。
    每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

  • 相关阅读:
    微信小程序,本地和真机测试都是好的,但体验版扫码显示空白页
    redis cluster 集群从节点无法读取值 (error) MOVED 原因和解决方案
    mysql笔记
    微信小程序对接通联支付
    解决win7凭据重启后消失的问题
    友链
    第三方登录--QQ登录--单体应用
    【笔记-错误】springCloud-alibaba-feign集成sentinel的启动报错
    【笔记】 springCloud--Alibaba--服务注册和服务发现
    【笔记】springCloud--Alibaba--nacos介绍----启动报错解决方案
  • 原文地址:https://www.cnblogs.com/xingchuxin/p/11123616.html
Copyright © 2011-2022 走看看