2017-05-30 49 views
1

我正在学习用python的火花,我想出了这个方法,Python代码简化和解释

def convert_to_row(d: dict) -> Row: 
    return Row(**OrderedDict(sorted(d.items()))) 

这种方法需要一个线和转换成。

有人可以简化这些是什么意思。

1)d: dict

2)-> Row

3)为什么是**呢?为kvargs

另外,如果我把这个包装到类中,第一个参数将是self,类似的东西。

def convert_to_row(self, d: dict) -> Row: 
    return Row(**OrderedDict(sorted(d.items()))) 

将它的工作方式相同,因为它是之前在做什么?

谢谢。

+0

相关:[什么是Python 3.5中的类型提示](https://stackoverflow.com/q/32557920/1639625)是的,这些'**'是用于'kwargs'解包的。 –

回答

1

1)和2)型提示,其中:

  • 帮助其他开发人员了解什么是预期的类型参数/变量的,什么是
  • 可以通过检查函数的返回类型mypy,用于Python
  • 静态类型检查器

3)**允许你解压每对键/值从OrderedDict

最后,只需添加self即可将此函数包装到类中。