在调用子函数时,可以传入基对象吗?

编程语言 2026-07-12

我在下面这段代码中遇到了一个错误,并找到了原因:

myset = set(["A", "C", "B"])

# Original Code: Fails  output: None
print(list(myset).sort())

list.sort() 是就地排序,且没有返回值,这段代码把sort() 的返回值传给print;这就是这段代码不能正常工作的原因。

要修复它,显然我可以使用sorted函数,或者自己实现一个:

# Method 1: Works out: ['A', 'B', 'C']
print(sorted(myset))

# Method 2: Works out: ['A', 'B', 'C']
def mysetsort(s):
  l = list(s)
  l.sort()
  return l

print(mysetsort(s))

是否有一种方法,可以沿用原本有缺陷的内联实现思路,即对cast得到的临时列表使用sort(),但传入/返回该临时的(已排序)对象?

解决方案

正如你所说:

使用 sorted(),如果你想就地排序元素或获得一个新的list实例。

另一方面,array.sort() 会对 array 进行排序,但返回 None。如果你想对一个变量进行排序,或不需要创建一个新的list实例,就用它。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章