問題:一個函數是讀取一個配置文件並設置許多變量。 其他幾個函數需要這些變量中的幾個才能完成這項工作。最好的做法是說,全局變量是一個不可行的,所以我一直在考慮改變/使用變量,這些變量對函數不是本地的,並且有很多變量需要處理。Python - 編碼風格 - 在函數中改變幾個變量
第一個是明顯的變量傳遞給函數並返回正常的結果。
第二種方法是直接改變/使用變量,但這是一種可接受的python方式來做到這一點,或者只是其他方式的全局變量?
第三種方法是把所有的變量傳遞,列表內,使用的功能列表...
哪一種方法是在Python3使用正確的(如果有一個比別人更好)哪一個應該避免(如果有的話)?
是的,我敢肯定,有幾個方法可以做到這一點,我只是不知道他們此刻:-)
例如#1)
def do_something(a, b, c, d, e):
print(a, b, c, d, e)
a = 'new1'
b = 'new2'
c = 'new3'
d = 'new4'
e = 'new5'
return (a, b, c, d, e)
def main():
var1 = 'test1'
var2 = 'test2'
var3 = 'test3'
var4 = 'test4'
var5 = 'test5'
print(var1, var2, var3, var4, var5)
var1, var2, var3, var4, var5 = do_something(var1, var2, var3, var4, var5)
print(var1, var2, var3, var4, var5)
if __name__ == '__main__':
main()
例如, #2)
def do_something():
print(main.var1, main.var2, main.var3, main.var4, main.var5)
main.var1 = 'new1'
main.var2 = 'new2'
main.var3 = 'new3'
main.var4 = 'new4'
main.var5 = 'new5'
def main():
main.var1 = 'test1'
main.var2 = 'test2'
main.var3 = 'test3'
main.var4 = 'test4'
main.var5 = 'test5'
print(main.var1, main.var2, main.var3, main.var4, main.var5)
do_something()
print(main.var1, main.var2, main.var3, main.var4, main.var5)
if __name__ == '__main__':
main()
例如#3)
def do_something_list(li):
print(li)
li[0] = 'new1'
li[1] = 'new2'
li[2] = 'new3'
li[3] = 'new4'
li[4] = 'new5'
return (li)
def main():
var1 = 'test1'
var2 = 'test2'
var3 = 'test3'
var4 = 'test4'
var5 = 'test5'
list1 = [var1, var2, var3, var4, var5]
print(list1)
list1 = do_something_list(list1)
print(list1)
if __name__ == '__main__':
main()
#2基本上濫用了這樣一個事實,即您可以將屬性分配給函數以避免定義一個類來包裝這些變量。 – chepner