我可以从模块返回变量吗?

时间:2014-02-28 19:05:37

标签: python function variables import module

我在python中编写了一个模块,我想在另一个文件中使用它。实际上,模块中的函数中有3个变量,我想在单独文件的代码中获取其中一个变量。该模块的代码是:

def attrib():

    #Code that isnt important to the question

    global name
    name = stats[0:x]

    global strength
    strength = stats[x+1:x+3]

    global skill
    skill = stats[x+4:x+6]

并且在文件中,我想将不同函数中的三个变量分开,这样我就可以将它们分配给两个不同的字符,如下所示:

import myModule

def nam():
    return (name from the module)

def sth():
    return (strength from the module)

def skl():
    return (skill from the module)

char_1_nam = nam()
char_1_sth = sth()
char_1_skl = skl()

首先,这是否可能,其次我该怎么做?

提前致谢:)

2 个答案:

答案 0 :(得分:0)

根据我的评论,请尝试以下方式:

# FILENAME: attributes.py

class Attributes(object):
    def __init__(self,stats):
        # I don't know how you formed x in your example but...
        self.name = stats[0:x]
        self.strength = stats[x+1:x+3]
        self.skill = stats[x+4:x+6]

# FILENAME: main.py

from attributes import Attributes

atts = Attributes(stats) # wherever they come from
# atts.name = your name
# atts.strenght = your strength
# atts.skill = your skill

不幸的是,你没有包含(并且可能不应该包括,因为它可能很长)代码的其余部分,因此很难给出更多的指导,而不是寻求面向对象的编程来解决问题。一般来说,我建议程序员做类似的事情:

class Character(object):
    def __init__(self,any,atts,you,might,need):
        self.any = any
        self.atts = atts
        # etc ...

看起来你拉动你的统计数据的方式有点开始 - 尝试使用元组来保存不同的数据结构而不是通过索引从字符串中获取它。它更快更容易阅读。即使您必须stats = (stats[0:x], stats[x+1:x+3], stats[x+4:x+6]),您仍可以从现在开始将其称为stats[0]stats[1]stats[2]。字典(statsdict = {'name': stats[0:x], ...})更加健壮,但如果这只是将数据从字符串移动到类中的方法,那么可能是不必要的

答案 1 :(得分:0)

首先,最好的建议是使用“类”而不是“函数”。 即使你想使用一个函数来处理这个问题。 这是我的解决方案....

#In the module1

variable1 = some value 
variable2 = some value

def get_variable1():
   return variable1 

def get_varable2():
   return variable2

#In the module2

variable1 = get_variable1()
variable2 = get_variable2()

通过这种方式,您可以通过函数访问另一个模块中的变量。但是如果你想访问多个变量会很痛苦,因为你必须为每个变量定义函数。

所以最好的建议是使用类,这样你也将获得面向对象编程的好处