cpython

How to convert this Python 2.7 code to Python 3?

浪尽此生 提交于 2021-02-16 16:32:13
问题 The following code works in Python 2.7, to dynamically inject local variables into a function scope: myvars = {"var": 123} def func(): exec("") locals().update(myvars) print(var) func() # assert "var" not in globals() It's a bit subtle, but the presence of an exec statement indicates to the compiler that the local namespace may be modified. In the reference implementation, it will transform the lookup of the name "locals" from a LOAD_GLOBAL op into a LOAD_NAME op, enabling addition to the

什么是 MicroPython ?它有什么优势?

三世轮回 提交于 2021-02-15 06:36:50
MicroPython 和 Python 都是一类 Python 的动态语言解释器。 若是在系统里安装了 Python 解释器,例如在 Windows 或者 Linux 命令行输入 python,进入 python 解释器的命令行模式即可输入运行查看效果。 >>> print('Hello World!') Hello World! 动态语言通常指不需要编译即时运行的程序语言,如:Python、Lua、JavaScript、Shell,而静态语言则是需要编译后才能运行,常见于 C 、C++、Cs、JAVA 等。 解释器和编译器的不同表现的描述为: 解释器可以实时读取代码进行即时编译运行程序指令(常见于 .bat) 而编译器需要编译过后得到的可直接运行的软件再点击运行程序指令(常见于 .exe) 从这个角度来说,解释器也就是编译器编译出来的一种通用型动态代码执行环境的软件。 MicroPython 和 CPython 的区别 大多数时候,Python 的发展以 CPython 为主,以下列出一些与 CPython 的差异化信息。 MicroPython 和 CPython 在 Python3 语法上保持高度的一致性,常用的标准语法命令都已经支持。 MicroPython 虽然只实现了 CPython 的标准库和容器库的一些部分,常见容器库有同类功能,但不同名的模块,但大多算法类的

How to share a C-singleton between multiple C-extensions

冷暖自知 提交于 2021-02-15 05:16:44
问题 I have a static library (or a bunch of c/cpp-files for that matter) which contains a singleton and is used by/linked to two different C-extensions. However, the singleton from the C-library doesn't behave like a singleton anymore: import getter import setter # set singleton: setter.set(21) # get singleton: print("singleton: ", getter.get()) #prints the old value:42 Here is a minimal example illustrating this problem using Cython for the sake of simplicity (all files are in the same folder): C

How to share a C-singleton between multiple C-extensions

我与影子孤独终老i 提交于 2021-02-15 05:16:24
问题 I have a static library (or a bunch of c/cpp-files for that matter) which contains a singleton and is used by/linked to two different C-extensions. However, the singleton from the C-library doesn't behave like a singleton anymore: import getter import setter # set singleton: setter.set(21) # get singleton: print("singleton: ", getter.get()) #prints the old value:42 Here is a minimal example illustrating this problem using Cython for the sake of simplicity (all files are in the same folder): C

How to share a C-singleton between multiple C-extensions

十年热恋 提交于 2021-02-15 05:14:48
问题 I have a static library (or a bunch of c/cpp-files for that matter) which contains a singleton and is used by/linked to two different C-extensions. However, the singleton from the C-library doesn't behave like a singleton anymore: import getter import setter # set singleton: setter.set(21) # get singleton: print("singleton: ", getter.get()) #prints the old value:42 Here is a minimal example illustrating this problem using Cython for the sake of simplicity (all files are in the same folder): C

【Python】魔法方法之__call__,将对象当方法使用

*爱你&永不变心* 提交于 2021-02-13 20:27:30
1、问题 我刚开始接触爬虫的时候,只是看完了 python 的基础,对 python 的语法还没有一个很深入的了解,在使用 bs4 这个库的时候,对其中某些语法感到非常的惊奇,不明白是怎么实现的。 bs4 的官方文档中说到: find_all() 几乎是 Beautiful Soup 中最常用的搜索方法,所以我们定义了它的简写方法。 BeautifulSoup 对象和 tag 对象可以被当作一个方法来使用,这个方法的执行结果与调用这个对象的 find_all() 方法相同,下面两行代码是等价的: soup .find_all( "a" ) soup ( "a" ) 这里, soup 是一个 BeautifulSoup 对象, soup("a") 这很明显是把对象当方法使用了,这是怎么做到的呢? 2、实现 在 Python 中,除了用户定义的函数,调用运算符(即 ())还可以应用到其他对象上。内置的 callable() 函数用来判断一个对象能否调用。就是说,任何 Python 对象都可以表现得像函数一样,为此,只需实现实例方法 __call__ 。 来看一个简单的示例: class Sum : def __init__ (self, x, y) : self._x = x self._y = y def add (self) : return self._x + self._y

Python简介

 ̄綄美尐妖づ 提交于 2021-02-11 19:32:47
引言 python是什么? python是编程语言,即python是语言 语言有英语、法语、葡萄牙语等,但凡是语言,都是用来沟通的介质。 程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机沟通的介质 什么是编程? 编程,是个动词,“编程”就等于“写代码”。写代码的目的就是为了让计算机做我们想要让它做的事情。所以如果我们现在想要让一台电脑听你的话去干活,就得使用它能够理解的语言去让它干活。 计算机只能理解“二进制”,也就是只能使用“0”和“1”来与计算机进行交流。例如,010110100100010011。 Python编程语言的排名(TIOBE链接: https://www.tiobe.com/tiobe-index/ ) python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 (龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者)。 2017年7月的TIOBE排行榜,Python已经占据第四的位置, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。 由上图可见,Python整体呈上升趋势

I got ModuleNotFoundError: No module named 'Cython' when trying to make Extension

白昼怎懂夜的黑 提交于 2021-02-11 16:55:12
问题 I'm trying to run this code : from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext ext_modules = [ Extension("sum", ["a123.pyx"])] setup( name = 'app', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules ) and I got this Error : Traceback (most recent call last): File "compile.py", line 3, in <module> from Cython.Distutils import build_ext ImportError: No module named 'Cython' I'm using Conda and I add cython to it also I

I got ModuleNotFoundError: No module named 'Cython' when trying to make Extension

北城以北 提交于 2021-02-11 16:55:08
问题 I'm trying to run this code : from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext ext_modules = [ Extension("sum", ["a123.pyx"])] setup( name = 'app', cmdclass = {'build_ext': build_ext}, ext_modules = ext_modules ) and I got this Error : Traceback (most recent call last): File "compile.py", line 3, in <module> from Cython.Distutils import build_ext ImportError: No module named 'Cython' I'm using Conda and I add cython to it also I

In Python 2.7 why are strings written faster in text mode than in binary mode?

那年仲夏 提交于 2021-02-11 14:16:37
问题 The following example script writes some strings to a file using either "w" , text, or "wb" , binary mode: import itertools as it from string import ascii_lowercase import time characters = it.cycle(ascii_lowercase) mode = 'w' # mode = 'wb' # using this mode takes longer to execute t1 = time.clock() with open('test.txt', mode) as fh: for __ in xrange(10**7): fh.write(''.join(it.islice(characters, 0, 50))) t2 = time.clock() print 'Mode: {}, time elapsed: {:.2f}'.format(mode, t2 - t1) With