我怎樣才能避免這樣的行:我怎樣才能避免調用函數重新輸入長變量名
this_long_variable_name = this_long_variable_name.replace('a', 'b')
我想我可以做一個函數,REPL避免它,
def repl(myfind, myreplace, s):
s = s.replace(myfind, myreplace)
print(s) # for testing purposes
return s
但由於關於本地和全局命名空間的東西,我不明白,我不能讓函數返回this_long_variable_name的更改值。以下是我已經試過:
this_long_variable_name = 'abbbc'
repl('b', 'x', this_long_variable_name)
print('after call to repl, this_long_variable_name =', this_long_variable_name)
內部print語句顯示預期:axxxc 調用REPL後print語句顯示不變:abbbbc
當然,它的工作原理,如果我放棄並接受多餘的打字:
this_long_variable_name = repl('b', 'x', this_long_variable_name)
順便說一句,這不只是關於什麼被重新輸入的長度,即使該變量的名稱是「一個,」我不希望重新輸入一個= a.replace(。 ..)
由於在功能s是一個參數,我不能這樣做: 全球小號
我甚至嘗試:
this_long_variable_name.repl('b', 'x')
這表明你怎麼都有點我理解,以及如何絕望的我。
字符串是不可變的,參數是*按值調用*所以你不能這樣做。 –
我的意思是說,出於某種原因我們可以這樣做。 'repl('a','b',some_function_call('with','arguments'))'的結果是什麼?在這種情況下,沒有對字符串的引用(我們有)。 –
恐怕輸入它是你最好的選擇。雖然是的,但是有些事情可以解決這個問題,他們所要做的就是讓代碼變得很臭。輸入它是1)對於閱讀你的代碼的人來說至少是令人困惑的,2)唯一的解決方案不涉及做難看的事情。 –