带有参数的Meta装饰器,在显式函数中定义

时间:2016-06-28 02:15:51

标签: python decorator python-decorators idiomatic

我希望明确替换常见的装饰器习语。

多年来,许多代码库中都有一个聪明的单行装饰器copy-pasted没有解释:

decorator_with_args = lambda decorator: lambda *args, **kwargs: lambda func: decorator(func, *args, **kwargs)

我的问题恰恰是that it is clever:它没有解释它的作用,有许多未被命名的活动部分,它是非显而易见的,缺乏表现力。

即使是2005年Peter Hunt的widely-cited ActiveState recipe也没有提供关于这在内部做什么的线索,也不知道它的部分名称应该是什么。

我希望看到更多Pythonic,更明确和富有表现力的替代品,其组成部分易于理解。

1 个答案:

答案 0 :(得分:1)

由于我不太清楚原件的细节是如何起作用的,所以我可能有这个错误:

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: {lat: -33, lng: 151}
  });

  var image = 'filePath' + 'usersPhoto.png';
  var beachMarker = new google.maps.Marker({
    position: {lat: -33.890, lng: 151.274},
    map: map,
    icon: image
  });
}

请为这些部分建议更好的名称,并指出任何错误(即与原始部分不同的行为)。