Python 如何在导入的库中使用全局变量?

Python 如何在导入的库中使用全局变量?,python,Python,我有一个main.py文件,其中包含如下代码块: import urtc import machine rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2))) from func import * #line 4 def current_time(): import urtc import machine rtc = urtc.DS3231(machine.I2C(scl=machi

我有一个
main.py
文件,其中包含如下代码块:

import urtc
import machine
rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
from func import *  #line 4
def current_time():
    import urtc
    import machine
    rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
    return urtc.tuple2seconds(rtc.datetime())
现在,第4行导入的
func.py
文件的代码如下:

import urtc
import machine
rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
from func import *  #line 4
def current_time():
    import urtc
    import machine
    rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
    return urtc.tuple2seconds(rtc.datetime())
main.py
中,我已经在导入
urtc
machine
并定义
rtc
。是否可以从函数
current\u time()
中删除这3行:


它似乎是多余的,因为我已经在
main.py
global中有了它们。如何从
main.py
global使用它们,而不是在函数
current_time()
中再次导入它们?

您应该在函数中使用参数,事实上,这样做的设计很糟糕

import urtc
import machine
rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
from func import *

def current_time(rtc):
    return urtc.tuple2seconds(rtc.datetime())

current_time(rtc)

您应该在函数中使用参数,事实上,按照您的方式进行设计是不好的

import urtc
import machine
rtc = urtc.DS3231(machine.I2C(scl=machine.Pin(0), sda=machine.Pin(2)))
from func import *

def current_time(rtc):
    return urtc.tuple2seconds(rtc.datetime())

current_time(rtc)

您应该将
urtc.DS3231
实例传递给
current\u time
函数,如下所示:

def current_time(rtc):
    return urtc.tuple2seconds(rtc.datetime())

但是您仍然需要在
func.py
中导入urtc,以便
urtc.tuple2seconds
可用。

您应该将
urtc.DS3231
实例传递给
current\u time
函数,如下所示:

def current_time(rtc):
    return urtc.tuple2seconds(rtc.datetime())

但是您仍然需要在
func.py
中导入urtc,以便
urtc.tuple2seconds
可用。

我建议您在func.py中加载依赖项(如果您没有在main.py的其他任何地方使用它们,这是一个更好的做法)。

我建议您在func.py中加载依赖项(如果您没有在main.py中的任何其他地方使用它们,那么这是一种更好的做法).

这似乎是我当前情况下唯一正确的选项。由于我在96kb RAM设备上添加此代码,内存管理是一个关键问题。即使是几个字节对设备来说也太多了。感谢您写下答案。这似乎是我当前情况下唯一正确的选项。因为我在96kb RAM设备上添加此代码,我emory管理是一个关键问题。即使是几个字节对设备来说也太多了。感谢您写下答案。