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

时间:2018-01-24 16:07:48

标签: 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()中再次导入它们?

3 个答案:

答案 0 :(得分:1)

你应该在你的函数中使用参数,这实际上是糟糕的设计,就像你那样做。

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)

答案 1 :(得分:1)

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

current_time

但您仍然需要def current_time(rtc): return urtc.tuple2seconds(rtc.datetime()) 中的import urtc,以便func.py可用。

答案 2 :(得分:0)

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