为什么有时会函数的返回值顺序在python中有所不同



我编写了一个简单的功能来从字符串中检索三个输出。当我想在其他功能中使用返回的值时,顺序会更改。例如:

def parsetrack2(trackstr):
    cardnumber, date = trackstr.split('=')
    expiryyear = date[0:2]
    expirymonth = date[2:4]
    return{cardnumber,expiryyear,expirymonth}

当我想将cardnumberexpiryyear传递给另一个功能时,有时会更改,而其他时间是正确的?这是为什么?

我应该如何更改它以防止这种变化?

发生的原因是您要返回词典而不是列表/元素。(dicts不能保存元素的顺序,而列表/元组则)

只需更改:

return{cardnumber,epxiryyear,epxirymonth} 

to:

return(cardnumber,epxiryyear,epxirymonth)

然后结果顺序将保持不变。

this:

{item_1, item_2, ...}

实际上是一个字面的(不是dict)。一组是无重复的项目集合。因此,返回的项目的顺序是随机的。而是这样做

def func():
    return 1, 2, 3
>>> a, b, c = func()
>>> a
1
>>> b
2
>>> c
3

最新更新