问题:一个函数是读取一个配置文件并设置许多变量。 其他几个函数需要这些变量中的几个才能完成这项工作。最好的做法是说,全局变量是一个不可行的,所以我一直在考虑改变/使用变量,这些变量对函数不是本地的,并且有很多变量需要处理。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