为什么这个 micropython 函数不起作用?

问题描述

我在 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'
 >>> 

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

谢谢!

解决方法

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