GVKun编程网logo

Python:乘法覆盖(python乘法赋值运算符)

12

如果您对Python:乘法覆盖感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Python:乘法覆盖的详细内容,我们还将为您解答python乘法赋值运算符的相关问题,并且为您

如果您对Python:乘法覆盖感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于Python:乘法覆盖的详细内容,我们还将为您解答python乘法赋值运算符的相关问题,并且为您提供关于C Python:在上下文中运行Python代码、MicroPython:STM32 上 的 Python 开发、MicroPython:STM32 上的 Python 开发、MicroPython:针对微控制器的Python的有价值信息。

本文目录一览:

Python:乘法覆盖(python乘法赋值运算符)

Python:乘法覆盖(python乘法赋值运算符)

因此,我有一个自定义类,该类具有__mul__与int一起使用的功能。然而,在我的程序(库),它越来越被称为周围的其他方法,即,2 *x在那里x是我的班。有什么办法可以让它使用我的__mul__功能吗?

答案1

小编典典

只需将以下内容添加到类定义中,就可以了:

__rmul__ = __mul__

C Python:在上下文中运行Python代码

C Python:在上下文中运行Python代码

使用Python C API函数,PyEval_EvalCode您可以执行已编译的Python代码。我想像 在函数范围内执行一样执行
Python代码块,以便它具有自己的局部变量字典,该字典不影响全局状态。

这似乎很容易做到,因为PyEval_EvalCode可以提供全局和本地字典:

PyObject* PyEval_EvalCode(PyCodeObject *co, PyObject *globals, PyObject*locals)

我遇到的问题与Python如何查找变量名有关。考虑以下我执行的代码PyEval_EvalCode

myvar = 300def func():    return myvarfunc()

这个简单的代码实际上引发了错误,因为Python无法myvar从内部找到变量func。即使myvar位于外部作用域的本地字典中,Python也不会将其复制到内部作用域的本地字典中。原因如下:

每当Python查找变量名时,首先检查locals,然后检查globals,最后检查builtins。在 模块范围
locals并且globals是相同的字典对象。因此x =5,模块作用域中的语句将放置xlocals字典中,该globals字典也是字典。现在,在模块作用域中定义的需要查找的函数x将不会x在function-
scope中找到locals,因为Python不会将模块作用域的局部变量复制到function-
scope的局部变量中。但这通常不是问题,因为它可以x在中找到globals

x = 5def foo():   print(x) # This works because ''x'' in globals() == True

只有 嵌套 函数,Python才能将外部作用域的本地复制到内部作用域的本地。(仅在内部范围内需要它们时,它似乎也很懒惰。)

def foo():   x = 5   def bar():      print(x) # Now ''x'' in locals() == True   bar()

因此,所有这些的结果是,在 模块范围内 执行代码时,必须确保全局字典和本地字典是SAME对象,否则模块作用域函数将无法访问模块作用域变量。

但就我而言,我不希望全局词典和本地词典相同。因此,我需要某种方式告诉Python解释器我正在函数作用域内执行代码。有什么办法可以做到这一点?我查看了PyCompileFlags和的其他参数,PyEval_EvalCodeEx但找不到任何方法可以做到这一点。

答案1

小编典典

Python实际上并没有将外部作用域的本地复制到内部作用域的本地;locals状态文档:

当在功能块中调用免费变量时,它是由locals()返回的,而在类块中则没有。

这里的“自由”变量是指由嵌套函数封闭的变量。这是一个重要的区别。

您的情况,最简单的解决方法是只传递 同一个 字典对象globalslocals

code = """myvar = 300def func():    return myvarfunc()"""d = {}eval(compile(code, "<str>", "exec"), d, d)

否则,您可以将代码包装在一个函数中,然后从编译的对象中提取出来:

s = ''def outer():\n    '' + ''\n    ''.join(code.strip().split(''\n''))exec(compile(s, ''<str>'', ''exec'').co_consts[0], {}, {})

MicroPython:STM32 上 的 Python 开发

MicroPython:STM32 上 的 Python 开发

虽然Python在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学。而一个没有MCU编程经验的初学者,要想让芯片跑起来,出现问题有时候要对照一两千页的英文文档来排查,这也绝非一天两天可以打下坚实的基础。

Python是一门适合初学者的语言

相比于目前不少主流的编程语言,Python拥有更好的可读性,因此非常适合初学者。Python本身自带的各种模块加上丰富的第三方模块,免去了很多“重复造轮子”的工作,节省了不少开发时间。Python的配置环境也不复杂,mac和linux都内置了python。Python的这一特点也让国内不少高校开始选择它作为程序设计课程来教授。

MicroPython:跑在微控制器上的Python

MicroPython顾名思义就是可以跑在微处理器上面的python。通过Python语言只需要用文本编辑器打开main.py文件。写几行代码,保存一下。单片机就可以跑起来。MicroPython用起来很简单,借助Micro Python,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,比如说控制LED灯泡、LCD显示器、读取电压、控制电机、访问SD卡等。

MicroPython的STM32分支简介

MicroPython中功能最强,速度最快,资源最丰富的是STM32系列,支持的芯片型号最多,适应性最好,它的库也是最全面的。目前STM32分支支持STM32F4/F7/L4系列下的数十种型号芯片和开发板,是DIY的最佳选择,比如说STM32F405。也就是说ARM处理器STM32F405上直接可运行Python语言,Python语言来控制单片机。

应用范围: 

    l  教育、学习

    l  电子竞赛

    l  机器人

    l  智能硬件

    l  物联网开发

    l  快速原型设计

    l  创客、DIYer 

Python可以做哪些事情? 

  • Python可以开发计算机桌面软件,例如pyqt。不仅可以开发windows还可以开发linux

  • Python可以用来做网站后台,豆瓣网就是用python做的

  • Python可以写网络爬虫,抓取网络信息。

  • Python 开发游戏。

  • Python 现在可以作为创客开发语言,树莓派,stm32……

一款专用的STM32+Python开发板

TPYBoard开发板是一款由国内TurnipSmart公司遵照MicroPython的MIT协议研发的一款MicroPython开发板,搭载STM32F405芯片。TPYBoard在保持原来所有硬件特点的基础上增加了SWD接口,方便烧写TPYBoard的固件(兼容MicroPython的固件)。它能运行Micro Python,是Python语言的一种精益和快速的实现,将Python经过优化运行在微控制器上。使用常规的Python 3.0,你可以毫不费力地运行你的下一个DIY项目。

TPYBoard开发板相比于其他微控制器板子的优势在哪?

相比于目前非常火爆的Arduino,TPYBoard更强、低能耗、易编程。并且PC端不需要编译器。相比于树莓派,TPYBoard更小巧、更简单、更便宜。

当然MicroPython支持多种开发板,除了官方标准的基于STM32F405RGT6,还支持Espruino Pico、STM32F4 Discovery(STM32F407)等开发板。

MicroPython:STM32 上的 Python 开发

MicroPython:STM32 上的 Python 开发

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代

 虽然 Python 在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学。而一个没有 MCU 编程经验的初学者,要想让芯片跑起来,出现问题有时候要对照一两千页的英文文档来排查,这也绝非一天两天可以打下坚实的基础。



Python 是一门适合初学者的语言



相比于目前不少主流的编程语言,Python 拥有更好的可读性,因此非常适合初学者。Python 本身自带的各种模块加上丰富的第三方模块,免去了很多 “重复造轮子” 的工作,节省了不少开发时间。Python 的配置环境也不复杂,mac 和 linux 都内置了 python。Python 的这一特点也让国内不少高校开始选择它作为程序设计课程来教授。



MicroPython:跑在微控制器上的 Python



MicroPython 顾名思义就是可以跑在微处理器上面的 python。通过 Python 语言只需要用文本编辑器打开 main.py 文件。写几行代码,保存一下。单片机就可以跑起来。MicroPython 用起来很简单,借助 Micro Python,用户完全可以通过 Python 脚本语言实现硬件底层的访问和控制,比如说控制 LED 灯泡、LCD 显示器、读取电压、控制电机、访问 SD 卡等。



MicroPython 的 STM32 分支简介



MicroPython 中功能最强,速度最快,资源最丰富的是 STM32 系列,支持的芯片型号最多,适应性最好,它的库也是最全面的。目前 STM32 分支支持 STM32F4/F7/L4 系列下的数十种型号芯片和开发板,是 DIY 的最佳选择,比如说 STM32F405。也就是说 ARM 处理器 STM32F405 上直接可运行 Python 语言,Python 语言来控制单片机。



应用范围:



 教育、学习



 电子竞赛



 机器人



 智能硬件



 物联网开发



 快速原型设计



 创客、DIYer



Python 可以做哪些事情?



Python 可以开发计算机桌面软件,例如 pyqt。不仅可以开发 windows 还可以开发



linux



Python 可以用来做网站后台,豆瓣网就是用 python 做的



Python 可以写网络爬虫,抓取网络信息。



Python 开发游戏。



Python 现在可以作为创客开发语言,树莓派,stm32……







TPYBoard 开发板是一款由国内 TurnipSmart 公司遵照 MicroPython 的 MIT 协议研发的一款 MicroPython 开发板,搭载 STM32F405 芯片。TPYBoard 在保持原来所有硬件特点的基础上增加了 SWD 接口,方便烧写 TPYBoard 的固件(兼容 MicroPython 的固件)。它能运行 Micro Python,是 Python 语言的一种精益和快速的实现,将 Python 经过优化运行在微控制器上。使用常规的 Python 3.0,你可以毫不费力地运行你的下一个 DIY 项目。



TPYBoard 开发板相比于其他微控制器板子的优势在哪?



相比于目前非常火爆的 Arduino,TPYBoard 更强、低能耗、易编程。并且 PC 端不需要编译器。相比于树莓派,TPYBoard 更小巧、更简单、更便宜。



当然 MicroPython 支持多种开发板,除了官方标准的基于 STM32F405RGT6,还支持 Espruino Pico、STM32F4 Discovery(STM32F407)等开发板。​​​ 

MicroPython:针对微控制器的Python

MicroPython:针对微控制器的Python

剑桥大学数学科学中心的Damien P. George在研究各种深奥数学、物理问题之余,还搞了一个MicroPython项目,将Python移植到ARM Cortex M微处理器上,并开发了电路板。2013年曾经在KickStarter上成功筹得近10万英镑。2014年成功完成项目,发货。

同时,这个项目也在GitHub上开源,至今已有1800+星,60位贡献者。

George曾在2014年PyCon UK上介绍MicroPython,所用硬件平台叫pyboard,规格是:
STM32F405RG: 192k RAM, 1M ROM, 168MHz, Cortex M4F.USB micro connector for device (and host).Micro SD card.3-axis accelerometer (MMA7660).Real-time clock, 4 LEDs, 2 switches.30 GPIO: symmetric pin layout, plus extra pins.Internal file system. ”/flash” and ”/sd”.
由于存储太小,CPython都太大,只能自行开发Python实现,采取了很多优化措施:
Interned strings, most already in ROM.Small integers stuffed in a pointer.Optimised method calls (thanks PyPy!).Range object is optimised (if possible).Python stack frames live on the C stack.ROM absolutely everything that can be ROMed!Garbage collection only (no reference counts).Exceptions implemented with custom setjmp/longjmp.
优化后,比原生的Python 2和Python 3都快了几个数量级:https://news.ycombinator.com/item?id=7841642

MicroPython的生态系统现在也开始起来了,就在本月前几天,荷兰埃因霍温的一个团队WiPy刚刚在KickStarter上成功众筹到75000多英镑,他们的项目是基于MicroPython软件的另一款硬件:超低功耗的物联网WiFi硬件。

SparkFun上也有WiFi模块ESP8266。

HN上的两次讨论:

-https://news.ycombinator.com/item?id=9558969
-https://news.ycombinator.com/item?id=7840566

关于Python:乘法覆盖python乘法赋值运算符的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于C Python:在上下文中运行Python代码、MicroPython:STM32 上 的 Python 开发、MicroPython:STM32 上的 Python 开发、MicroPython:针对微控制器的Python的相关信息,请在本站寻找。

本文标签: