在不同的有限参数上重复方法调用的 Pythonic 方式

标签 python coding-style

我正在盯着自己编写的一段 Python 代码看,虽然它是正确的,但很丑陋。是否有更 pythonic 的方式来做到这一点?

    r = self.get_pixel(x,y, RED)
    g = self.get_pixel(x,y, GREEN)
    b = self.get_pixel(x,y, BLUE)
    t = function(r,g,b)
    if t: 
        r2, g2, b2 = t  
        self.set_pixel(x,y,RED, r2)
        self.set_pixel(x,y,GREEN, g2)
        self.set_pixel(x,y,BLUE, b2)

问题是重复调用 get_pixelset_pixel 的方法。供您引用:

    RED, GREEN, BLUE = range(3)

另请注意,我想保持代码的清晰度和整洁度。

最佳答案

当您使用 self 时,get_pixel 等似乎是您的 类的方法。查看 API 并修复它们,而不是列表理解和 zip() 和其他解决方法。两个建议:

  1. 编写另一个返回 3 元组的方法 get_pixel_colors(x, y)。然后你可以这样写 r, g, b = self.get_pixel_colors(x, y)
  2. 类似地:self.set_pixel_colors(x, y, r, g, b)

更好的是,您可以使用 *args 表示法:

old_colors = self.get_pixel_colors(x, y)
new_colors = function(*old_colors)
if new_colors:
    self.set_pixel_colors(x, y, *new_colors)

关于在不同的有限参数上重复方法调用的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485403/

相关文章:

C 内核库包含和膨胀

python - 在 python 中设计类的最佳方法

c++ - namespace 别名与定义的实际优势

coding-style - 在新工作中继承应用程序

Python pymysql - 遍历 mysql 表键和值

python - 与 tif 一起保存图像元数据的最佳方法是什么?

python - python中的递归计数器解决方案

python - PyQt Web 浏览器 : Focus on the webpage without a mouse click

python - 如何将Django OAuth Toolkit与Python Social Auth结合使用?

c++ - decltype 在函数参数中的使用