Problem: Eine Funktion liest eine Konfigurationsdatei und richtet entsprechend viele Variablen ein. Mehrere andere Funktionen benötigen mehrere dieser Variablen, um ihre Arbeit zu erledigen.Python - Codierungsstil - mehrere Variablen über Funktionen hinweg ändern
Best Practice sagt, Globale Variablen sind ein No-Go, so dass ich dachte, was altertives gibt es Variablen zu ändern/Verwendung, die auf eine Funktion nicht lokal sind und wenn es eine Menge von Variablen zu handhaben?
Die erste ist die offensichtliche variable Übertragung auf die Funktion und gibt das Ergebnis als normal zurück.
Zweite Methode ist, die Variablen direkt zu ändern/zu verwenden, aber ist dies eine akzeptable Python-Methode oder nur ein anderer "Weg" der globalen Variablen?
dritte Methode ist, alle Variablen in Übertragung zu setzen, in einer Liste und verwenden Sie diese Liste in der Funktion ...
Welche Methode ist die richtige in Python3 zu verwenden (wenn man besser ist als die anderen) und welche sollte vermieden werden (falls vorhanden)?
Und ja, ich bin sicher, dass es noch mehr Möglichkeiten, es zu tun, ich weiß nicht nur von ihnen im Moment weiß :-)
z.B. # 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()
z.B. # 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()
z.B. # 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 im Grunde missbraucht die Tatsache, dass Sie einer Funktion Attribute zuweisen können, um zu vermeiden, eine Klasse zu definieren, die die Variablen umschließt. – chepner