【发布时间】:2017-10-18 18:36:06
【问题描述】:
考虑这段代码:
def function(condition):
if condition == 'condition1':
print('No problem here')
if condition == 'condition2':
test = ['1','2','3','4']
print(test)
if condition == 'condition3':
#doing something else using variable 'test'
是否可以在两个if 语句之间共享静态列表?目前,我有两个工作想法,但都有其局限性
案例一:在函数开头声明静态列表
def function(condition):
test = ['1','2','3','4']
if condition == 'condition1':
print('No problem here')
if condition == 'condition2':
print(test)
if condition == 'condition3':
#doing something else using variable 'test'
限制:这意味着我将在每次调用function 时创建列表,即使在condition == 'condition1' 时我不需要它
案例2:在两个if语句中声明静态列表
def function(condition):
if condition == 'condition1':
print('No problem here')
if condition == 'condition2':
test = ['1','2','3','4']
print(test)
if condition == 'condition3':
test = ['1','2','3','4']
#doing something else using variable 'test'
限制:在这种特殊情况下,它似乎并没有那么糟糕,但如果我的列表有更多嵌套列表的数据,重复它会使代码维护变得更加困难,因为需要进行更改做过不止一次。
也许有一个简单的方法可以解决这个问题,我想太多了,但正如我所说,这是我第一次看到这种情况。
【问题讨论】:
-
例如,您可以将列表的创建设为一个单独的函数。
-
哇,是的,我会等着看是否有其他答案出现,但这是一个非常好的观点。不敢相信我没这么看。谢谢!
-
如果
'condition1'是您唯一不需要该列表的时间,请在该分支中放置一个return,然后再创建该列表。 -
@jasonharper 这是情况的简化版本。我正在考虑更一般的情况。但这是一个非常好的技巧,谢谢你的回答!
-
您也可以将其作为函数的可选参数。由于它是一个包含数据的列表 - 当翻译遇到
def时会对其进行评估。但这还不够好,只是为了教育目的
标签: python python-3.x if-statement