为啥这个 micropython 函数不起作用?

Posted

技术标签:

【中文标题】为啥这个 micropython 函数不起作用?【英文标题】:Why doesn't this micropython function work?为什么这个 micropython 函数不起作用? 【发布时间】:2021-06-14 11:56:50 【问题描述】:

我在 micropython 中编写了一个函数,它试图检索 uname 信息并删除我不想要的东西,然后返回一个值:

 import os

 def get_uname():      
     my_uname = os.uname()[3]
     my_uname = my_uname.replace("(GNU 9.3.0 MinSizeRel)", "") 
     my_uname = my_uname.replace(" on ", "-")
     my_uname = my_uname.replace(" ", "") 
     return my_uname

每次我尝试将其作为模块导入时,都会收到一条错误消息:

 import sw-ver
 Traceback (most recent call last):
 File "<stdin>", line 1
 SyntaxError: invalid syntax

但是如果我将函数直接复制并粘贴到repl中,它是成功的,没有错误:

 >>> import os
 >>> def get_uname():  
 ...     my_uname = os.uname()[3]
 ...     my_uname = my_uname.replace("(GNU 9.3.0 MinSizeRel)", "")
 ...     my_uname = my_uname.replace(" on ", "-")
 ...     my_uname = my_uname.replace(" ", "")
 ...     return my_uname
 ...     
 ...     
 ... 
 >>> get_uname()
 'v1.14-2021-02-05'
 >>> 

我已经尝试了所有我能想到的方法,我重命名了文件以防万一导致问题。有人对如何解决此问题有任何建议吗?

谢谢!

【问题讨论】:

【参考方案1】:

如果您已将函数放在文件sw-ver.py 中,您将难以使用import sw-ver 导入它,因为- 用于算术等,即使在这种情况下也是如此。如果您无法重命名文件,请参阅here,但最简单的答案是遵循style guide 并仅对模块使用小写字母,或者至少使用_ 而不是-

【讨论】:

以上是关于为啥这个 micropython 函数不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个带有布尔变量的函数不起作用?

为啥这个循环不起作用?

为啥这个 python 闭包不起作用?

为啥我的数组或函数不起作用?

为啥这个带参数的 sqlsrv 查询不起作用?

为啥这个线性和二进制搜索的基准代码不起作用?