随机随机列表变为无

Mr *_*est 0 python nonetype

import random

a = [1,2,3,4,5,6,7,8,9]
# random.shuffle(a) # this is fine
a = random.shuffle(a) # a is now None
Run Code Online (Sandbox Code Playgroud)

我在我的代码中输入了一个拼写错误,但在这种情况下我想知道为什么变成None.引擎盖下发生了什么?

Ana*_*mar 5

random.shuffle就地工作,它不返回任何东西(因此默认它返回None,因为所有Python函数调用应该返回一些值),因此当你这样做 - a = random.shuffle(a),a变为无.试试 -

random.shuffle(a)
Run Code Online (Sandbox Code Playgroud)

从文件random.shuffle-

random.shuffle(x[, random])

将序列x随机移动到位.可选参数random是一个0参数函数,在[0.0,1.0)中返回随机浮点数; 默认情况下,这是函数random().

(强调我的)

  • 我知道你的意思,但恕我直言说"它不会返回任何东西"有点误导,因为它返回"无".也许你应该提一下_all_ Python函数_must_返回一些东西,没有显式`return`语句的函数返回`None`,并且它常规用于将对象原位变为返回`None`的函数. (2认同)