2016-01-21 69 views
0

好的...從另一個文件導入和更改變量

我搜索並搜索了一個直接回答我的問題,但沒有成功的答案。我的問題很簡單,我真的認爲那裏會有更直接的答案。請記住,我對這門語言還比較陌生,並且仍在學習。

所以我將使用fileAfileB作爲我的兩個文件,並使用x作爲我的示例變量。變量x包含在fileB中。我該如何去有關導入變量xfileA然後變化x另一個值通過raw_input然後fileB新值的變量x更新?

我不確定這是否可能,但我一定會這麼認爲。我正在使用Python 2.7.11,謝謝你的進步。

+0

爲什麼你需要這個? –

+0

@PeterWood所以基本上...我有一個文件,我正在使用的球員統計(fileB),其中有一個變量,跟蹤球員的水平。我想讓我使用raw_input來更改該變量來調試程序並在需要時更改級別,以便在編輯它們之後檢查各個級別。 – Cether

+0

這聽起來像一個配置文件?在FileA中導入FileB,然後創建一個名爲modifyParam(fileB.player.level)的函數,FileB player.level = 5 – spicyramen

回答

1

如果 「變量」 你指的是一個可變的值,你在做什麼要求將會工作。

FILEB:

my_variable = ["a list with a string in it"] 

的fileA:

from fileB import my_variable # import the value 
my_variable.append("and another string") 

fileA後已經加載fileB.my_variable將在這兩個值。

但是,這隻適用於可變值。如果該變量是不可變的,fileA中的代碼無法對其進行更改,因此您將遇到問題。沒有辦法直接解決這個問題,但有很多方法可以解決這個問題,並且仍然能夠滿足您的需求。

最簡單的就是使用import fileB而不是from fileB import my_variable。這可以讓你在fileB的命名空間中使用類似fileB.whatever這樣的名稱。您可以重新綁定命名空間中的東西到你的心臟的內容:

FILEB:

my_variable = 1 # something immutable this time 

的fileA:

import fileB 
fileB.my_variable = 2 # change the value in fileB's namespace 

這可能是最簡單的方法。

另一種解決方案是將不可變變量放入可變容器中,然後修改容器而不是變量。例如,如果字符串"a list with a string in it"是我們希望改變第一個示例的值,那麼我們可以簡單地爲my_variable[0](而不是附加)指定一個新值。

執行此操作的常用方法是將值放入字典,列表或甚至放入類(或其中一個可變實例)中。然後你可以導入容器對象並改變它來改變你關心的值。

0

如果您指的是常量變量,在90%的情況下,這意味着程序架構不好,因爲它可能更容易實現。

其中的一種可能的方式可以是:

在這兩個文件的創建某些功能的輸入參數和執行它們與價值發揮。

例如:

fileA.py

from fileB import testB 
TEST_VAL = 5 

def testA(val): 
    TEST_VAL += 10 
    result = testB(TEST_VAL) 
    # play with changed TEST_VAL 

fileB.py

def testB(val): 
    # do something 
    return val ** 2