我有两个名单:numbers
和group
。我使用辅助函数对列表进行排序。我想知道的是,是否可以从函数中返回另一个变量,'sorted'='True'?
numbers = [8, 3, 1, 2, 5, 4, 7, 6]
group = [2, 3, 5, 7]
def sort_priority(values, group):
sorted = 'False'
def helper(x):
if x in group:
sorted = 'True'
return (0, x)
else:
return (1, x)
values.sort(key=helper)
return sorted
如果您使用的是Python 3,则可以使用nonlocal语句实现此目的:
def sort_priority(values, group):
sorted = 'False'
def helper(x):
nonlocal sorted
if x in group:
sorted = 'True'
return (0, x)
else:
return (1, x)
values.sort(key=helper)
return sorted
这允许外部范围中的sorted
变量被辅助函数的内部范围修改 - 因此sort_priority
将返回"True"
。
如果您使用的是Python 2,则nonlocal
语句不可用,但类似的内容可以像这样实现:
def sort_priority(values, group):
nonlocals = {'sorted': 'False'}
def helper(x):
if x in group:
nonlocals['sorted'] = 'True'
return (0, x)
else:
return (1, x)
values.sort(key=helper)
return nonlocals['sorted']