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

2024-06-25 06:50:17 发布

您现在位置: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

现在,在第4行导入的func.py文件有如下代码:

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中,我已经导入了urtcmachine并定义了rtc。是否可以从函数current_time()中删除这3行:

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

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


Tags: 文件代码pyimporttimemainpinmachine
3条回答

你应该在你的函数中使用参数,这实际上是一个糟糕的设计。你知道吗

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_time函数,如下所示:

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

但是您仍然需要在func.pyimport urtc,这样urtc.tuple2seconds就可用了。你知道吗

我建议您在职能部门(如果您没有在其他地方使用它们主.py,这是一个更好的做法)。你知道吗

相关问题 更多 >