文件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