文件1从文件导入功能使用时,如何修改导入文件以提供所需的输出而不修改导入的文件?
def multiply():
x = raw_input('enter the number')
y = x*4
文件2
from file1 import multiply
如何使的x = 4
值,因此结果(4*4) = 16
无需用户输入正在实施运行file2
什么时候?
文件1从文件导入功能使用时,如何修改导入文件以提供所需的输出而不修改导入的文件?
def multiply():
x = raw_input('enter the number')
y = x*4
文件2
from file1 import multiply
如何使的x = 4
值,因此结果(4*4) = 16
无需用户输入正在实施运行file2
什么时候?
有一个简单的尽管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
很好的答案。希望OP不会使用它;) – zvone
是的,我只能希望。 –
这真的有无关的功能在两个不同的文件之中,他们也可以同样是在同样的模块,问题依然存在。有一个hackey,可怕的方式来实现这一点,但为什么你不写一个函数,而不是用户输入参数? –
那么你是否实际上试图用* x = 4来代替文件1中的行,它表示'x = raw_input('输入数字')'?我认为这是不可能的,因为变量是局部的,这意味着它们不能在函数之外访问。如果您使用* classes *,您可以在继承另一个文件中的类之后重写它。 – Mangohero1
你不能只修改'file1'?你可以这样做,它需要一个参数'x',默认为'None',并且如果该函数没有收到'x'的有效值,它会要求用户输入一个。 'def multiply(x = None):' – Charles