Python从被调用的模块获取返回的对象

时间:2016-08-03 16:49:27

标签: python object module spyder

鉴于此模块(sample.py):

def calculation(x):
   r = x + 1
   return r

在Spyder的主.py文件中,我这样称呼它:

import sample
b = sample.calculation(2)

我的(愚蠢)问题是: 如何访问r,如示例模块中所定义的那样,用于主要.py文件中的其他计算,我从中调用样本?

我想继续做类似的事情:

a = r/2
调用

后,在主.py文件中

sample.calculation(2)

更新

我认为b会导致数字3。 但是如果模块返回2个不同的数字(对象)怎么办?我如何单独访问它们?

2 个答案:

答案 0 :(得分:1)

  

我的(愚蠢)问题是:如何在示例模块中定义的r中访问主要.py文件中的其他计算,我从中调用样本?

您使用您为该值指定的b变量。

  

但是如果模块返回2个不同的数字(对象)怎么办?我如何单独访问它们?

如果您的意思是该功能执行此操作:

def return_two_things():
    return 1, 2

然后将它们分配给两个变量:

a, b = module.return_two_things()

如果您的意思是该功能执行此操作:

def wrong_way():
    return 1
    return 2

那么你的功能是错误的,你误解了return语句是如何工作的。一旦函数执行return,函数就会结束;它不会继续返回更多东西。

答案 1 :(得分:1)

通过使其成为全局变量,可以访问另一个模块的变量。但这不是一个好的做法,而且经常避免。你可以这样做

import sample
r = sample.calculation(2)

这样,您可以使用相同的变量名称' r'但它现在是一个局部变量。

关于从模块返回多个对象的第二个问题,你可以这样做

def module1(x):
    return x+1,x+2

a,b = module1(5)
#a has 5+1 = 6 
#b has 5+2 = 7