如何从python中的另一个文件导入变量

时间:2019-07-30 05:49:49

标签: python-3.x

我在otp_fun文件中有一个变量“ OTPN”,我想将该变量导入到主文件中,我尝试通过导入“从otp_fun import otpn”进行尝试,但是它抛出了错误

otp_fun file code   

def otp():
    new = int(random.random()*1000000)
    global otpn
    otpn = round(new,6)



main file code

from Contacts.otp_fun import otp,otpn

它必须导入otpn变量,但抛出错误说 “ ImportError:无法从'Contacts.otp_fun'导入名称'otpn'

2 个答案:

答案 0 :(得分:2)

您无法导入otpn,因为它尚未定义,您会看到它在otp中定义,但是只有在调用该变量后,该变量才可用。

您可能认为解决方案是在全局范围内定义otpn,其默认值如下:

otp_fun file code 

otpn = None

def otp():
    new = int(random.random()*1000000)
    global otpn
    otpn = round(new,6)

但是,如果您使用from Contacts.otp_fun import otpn导入它,然后调用otp,则会看到该值没有改变:(

main file code

from otp_fun import otpn, otp

print(otpn)
# prints None

otp()

print(otpn)
# prints None

要保持链接的值,您想使用import Contacts.otp_fun导入整个模块。

main file code

import otp_fun

print(otp_fun.otpn)
# prints None

otp_fun.otp()
# changes otpn value

print(otp_fun.otpn)
# prints some random number

答案 1 :(得分:0)

您可以使用Class

otp_fun文件代码:

import random


class Otp():
    def otp(self):
        new = int(random.random() * 1000000)
        global otpn
        otpn = round(new, 6)
        return otpn

主文件代码:

from Contacts.otp_fun import Otp

myVariable = Otp()

print(myVariable.otp())