2016-10-05 32 views
0

文件1从文件导入功能使用时,如何修改导入文件以提供所需的输出而不修改导入的文件?

def multiply(): 
    x = raw_input('enter the number') 
    y = x*4 

文件2

from file1 import multiply 

如何使的x = 4值,因此结果(4*4) = 16无需用户输入正在实施运行file2什么时候?

+0

这真的有无关的功能在两个不同的文件之中,他们也可以同样是在同样的模块,问题依然存在。有一个hackey,可怕的方式来实现这一点,但为什么你不写一个函数,而不是用户输入参数? –

+0

那么你是否实际上试图用* x = 4来代替文件1中的行,它表示'x = raw_input('输入数字')'?我认为这是不可能的,因为变量是局部的,这意味着它们不能在函数之外访问。如果您使用* classes *,您可以在继承另一个文件中的类之后重写它。 – Mangohero1

+0

你不能只修改'file1'?你可以这样做,它需要一个参数'x',默认为'None',并且如果该函数没有收到'x'的有效值,它会要求用户输入一个。 'def multiply(x = None):' – Charles

回答

2

有一个简单的尽管hackey实现你想要的方式。我建议反对它。它本质上是一个糟糕的设计选择,但在这里它是:

def multiply(): 
    x = int(raw_input()) 
    print x * 4 

import sys 
import io 
def force_stdin(f, force_input): 
    stdin = sys.stdin 
    sys.stdin = io.StringIO(unicode(force_input)) 
    f() 
    sys.stdin = stdin 

force_stdin(multiply, '4') 

输出:

16 
+0

很好的答案。希望OP不会使用它;) – zvone

+0

是的,我只能希望。 –