cpython

Why don't Python sets preserve insertion order?

独自空忆成欢 提交于 2020-05-26 10:25:42
问题 I was surprised to discover recently that while dicts are guaranteed to preserve insertion order in Python 3.7+, sets are not: >>> d = {'a': 1, 'b': 2, 'c': 3} >>> d {'a': 1, 'b': 2, 'c': 3} >>> d['d'] = 4 >>> d {'a': 1, 'b': 2, 'c': 3, 'd': 4} >>> s = {'a', 'b', 'c'} >>> s {'b', 'a', 'c'} >>> s.add('d') >>> s {'d', 'b', 'a', 'c'} What is the rationale for this difference? Do the same efficiency improvements that led the Python team to change the dict implementation not apply to sets as well?

How can I tell which python implementation I'm using?

瘦欲@ 提交于 2020-05-24 09:38:12
问题 Python has a few different implementations: CPython, Jython, PyPy, etc. I want to programmatically determine which implementation my code is running on. How can I do that? To be specific, write a function called get_implementation_name() for me: impl_name = get_implementation_name() if impl_name == "CPython": print "I can abuse CPython implementation details. (I'm a bad, bad man.)" elif impl_name == "PyPy": print "Can't count on reference-counting garbage collection here..." else: print "I

How can I tell which python implementation I'm using?

一个人想着一个人 提交于 2020-05-24 09:37:11
问题 Python has a few different implementations: CPython, Jython, PyPy, etc. I want to programmatically determine which implementation my code is running on. How can I do that? To be specific, write a function called get_implementation_name() for me: impl_name = get_implementation_name() if impl_name == "CPython": print "I can abuse CPython implementation details. (I'm a bad, bad man.)" elif impl_name == "PyPy": print "Can't count on reference-counting garbage collection here..." else: print "I

Pybind11: Why doesnt asyn call from python execute the callbacks properly in C++?

人盡茶涼 提交于 2020-05-17 06:12:25
问题 I have a python method which is implemented like this: def start(self): try: self.is_running = True self._main_loop() except Exception as ex: path='exceptions-servicecore.log' track = traceback.format_exc() exception_time = datetime.now().strftime("%d/%m/%Y %H:%M:%S") with open(path, 'a') as f: f.writelines(f'\n{exception_time} : exception occured {ex.args} \n{track}') def start_async(self): st = threading.Thread(target=self.start) st.start() The _main_loop() here then runs bunch of commands

Python3 学习第一天总结

馋奶兔 提交于 2020-05-08 10:37:27
一、python介绍    1.python是一门 动态解释性的强类型 定义语言;     简单解释一下:     定义变量不需要定义类型的为动态语言:典型的有Python和Ruby,反之定义变量需要定义类型的为静态语言:典型的有Java,C、C++;     解释型对应还有种编译型语言:(以java为类)编译型语言需要把我们编写的源代码文件.java通过编译器 编译成可执行的.class文件,才可以运行,也就是说必须把所有源文件全部编译成可执行文件才可以运行程序,而解释性语言是一边编译一边执行,不需要把所有的编译完在执行,Python就是这样的一种语言     强类型定义语言是指变量一旦指定某个数据类型,不经过强行转化一直保持这个类型,是类型安全语言;弱类型定义语言与之相反;     注意:强类型定义语言在速度上逊色于弱类型语言,但是可以有效的避免很多错误。一门语言是否安全与是否动态语言没有任何关系,比如java就是静态语言,但也是强类型语言,也是类型安全语言     2.python语言的优缺点:      优点:1>Python的定位是"优雅"、"明确"、"简单"        2>开发效率非常高        3>高级语言        4>可移植性        5>可扩展性          6>可嵌入性     缺点:1>速度慢        2>代码不能加密    

Python一键转Jar包,Java调用Python新姿势!

允我心安 提交于 2020-05-08 05:52:03
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧! 本文结构: - 需求背景 - 进击的 Python - Java 和 Python - 给 Python 加速 - 寻找方向 - Jython? - Python->Native 代码 - 整体思路 - 实际动手 - 自动化 - 关键问题 - import 的问题 - Python GIL 问题 - 测试效果 - 总结 需求背景 进击的 Python 随着人工智能的兴起,Python 这门曾经小众的编程语言可谓是焕发了第二春。 以 tensorflow、pytorch 等为主的机器学习/深度学习的开发框架大行其道,助推了 python 这门曾经以爬虫见长(python 粉别生气)的编程语言在 TIOBE 编程语言排行榜上一路披荆斩棘,坐上前三甲的宝座,仅次于 Java 和 C,将 C++、JavaScript、PHP、C#等一众劲敌斩落马下。 当然,轩辕君向来是不提倡编程语言之间的竞争对比,每一门语言都有自己的优势和劣势,有自己应用的领域。 另一方面,TIOBE 统计的数据也不能代表国内的实际情况,上面的例子只是侧面反映了 Python 这门语言如今的流行程度。 Java 还是 Python 说回咱们的需求上来,如今在不少的企业中,同时存在

Python学习心得第一周-01

孤人 提交于 2020-05-07 16:41:46
一 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: #计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。 什么是编程语言? #上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作。 什么是编程? #编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。 #强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义   所以我有话对大家说 Python是语言,而学习语言的套路都是一样的,以英语学习为例,你需要学单词,然后学语法,最后写作文。 英语的单词---------->Python中的关键字 英语的语法---------->Python的语法 英语的作文---------->用Python语言写的程序 此时你心里应该有数了,学Python其实很简单,全都是在记忆一些固定的套路而已,那为何有的人会觉得Python难呢?来看一个普遍的问题,问题中包含答案。。。。

如果PyPy快6.3倍,为什么我不应该使用PyPy而不是CPython?

梦想与她 提交于 2020-05-06 02:02:20
问题: I've been hearing a lot about the PyPy project. 我一直听到很多关于 PyPy 项目的消息。 They claim it is 6.3 times faster than the CPython interpreter on their site . 他们声称它比 他们网站 上的 CPython 解释器快6.3倍。 Whenever we talk about dynamic languages like Python, speed is one of the top issues. 每当我们谈论像Python这样的动态语言时,速度是最重要的问题之一。 To solve this, they say PyPy is 6.3 times faster. 为了解决这个问题,他们说PyPy的速度要快6.3倍。 The second issue is parallelism, the infamous Global Interpreter Lock (GIL). 第二个问题是并行性,臭名昭着的 全球口译锁 (GIL)。 For this, PyPy says it can give GIL-less Python . 为此,PyPy表示它 可以提供无GIL的Python 。 If PyPy can solve these great

第一篇 Python安装与环境变量的配置

北城余情 提交于 2020-05-05 20:52:01
开发语言有很多种,为什么选Python? 先对各种开发语言做个初识和分类如下: 高级语言:Python Java、PHP C# Go ruby C++... ---> 字节码 低级语言:C、汇编 --->机器码 语言之间的对比: PHP类:适用于写网页,局限性(国内);目前国外采用PHP写网页已经很少了 Python Java: 既可以写网页,也可以写后台功能     - Python执行效率低,开发效率高 - Java执行效率高, 开发效率低   其实所有的执行效率高低,在当前的电脑配置上体现的并不明显,而且跟程序开发者有很大关系,一个牛逼的开发者用Python开发的程序执行效率依然甩一个渣渣用Java开发的程序,所以执行效率问题可以忽略,   同时,Java能做的,Python都可以做,而Java实现某个功能可能需要10行代码,Python可能需要2行,在效率为王的今天,Python值得考虑,另外,本人是半路出家,学习时间有限,Python简单易上手,所以 为什么不选Python呢?  Python种类: JPython IronPython JavaScriptPython RubyPython CPython :就是我们说的Python ... pypy 这是用CPython开发的Python,应该是运行最快的Python Python安装及环境变量配置

详解Python中内置的NotImplemented类型的用法

无人久伴 提交于 2020-05-04 11:17:27
它是什么? ? 1 2 >>> type (NotImplemented) < type 'NotImplementedType' > NotImplemented 是Python在内置命名空间中的六个常数之一。其他有 False 、 True 、 None 、Ellipsis 和 __debug__。 和 Ellipsis很像, NotImplemented 能被重新赋值(覆盖)。对它赋值,甚至改变属性名称, 不会产生 SyntaxError。所以它不是一个真正的“真”常数。当然,我们应该永远不改变它。 但是为了完整性: ? 1 2 3 4 5 6 7 8 >>> None = 'hello' ... SyntaxError: can't assign to keyword >>> NotImplemented NotImplemented >>> NotImplemented = 'do not' >>> NotImplemented 'do not' 它有什么用?什么时候用? NotImplemented 是个特殊值,它能被二元特殊方法返回(比如 __eq__() 、 __lt__() 、 __add__() 、 __rsub__() 等),表明某个类型没有像其他类型那样实现这些操作。同样,它或许会被原地处理(in place)的二元特殊方法返回(比如__imul__()、_