如何将代码分解为更小的块,将这些代码块转换为函数,然后在python中从main中调用函数?

时间:2014-10-09 22:39:40

标签: python function module drawing call

我需要一种方法将我的代码分解成更小的块,将这些代码块转换为函数,然后从main中调用函数。

import picture
def main():

    # Size of the canvas
    canvaswidth = 500
    canvasheight = 500
    canvas = picture.Picture(canvaswidth, canvasheight)

    # My color pallette
    black = (0, 0, 0)
    purple = (128, 0, 128)
    cream = (255, 255, 240)
    brown = (102,51, 0)
    blue = (0, 76, 173)
    red = (255, 0, 0)
    yellow = (255, 255, 0)

    canvas.setFillColor(brown)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    canvas.drawRectFill(175,75,100,300)

    canvas.setFillColor(red)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    canvas.drawPolygonFill([175,75,225,25,275,75])

    canvas.setFillColor(red)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    canvas.drawPolygonFill([175,430,200,300,250,300,275,430])

    canvas.setFillColor(red)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    canvas.drawPolygonFill([125,400,150,300,175,300,175,375])

    canvas.setFillColor(red)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    canvas.drawPolygonFill([275,375,275,300,300,300,325,400])

    canvas.display()

main()

1 个答案:

答案 0 :(得分:0)

如果不了解您的目的和动机,很难给出答案。你的意思是以下吗?

# Size of the canvas
canvaswidth = 500
canvasheight = 500
canvas = picture.Picture(canvaswidth, canvasheight)

# My color pallette
black = (0, 0, 0)
purple = (128, 0, 128)
cream = (255, 255, 240)
brown = (102,51, 0)
blue = (0, 76, 173)
red = (255, 0, 0)
yellow = (255, 255, 0)

def doit(canvas, fill_color, draw_method, *data):
    canvas.setFillColor(fill_color)
    canvas.setOutlineColor(black)
    canvas.setPenWidth(3)
    getattr(canvas, draw_method)(*data)

def main():
    canvas = picture.Picture(canvaswidth, canvasheight)
    doit(canvas, brown, 'drawRectFill',    175,75,100,300)
    doit(canvas, red,   'drawPolygonFill', [175,75,225,25,275,75])
    doit(canvas, red,   'drawPolygonFill', [175,430,200,300,250,300,275,430])
    doit(canvas, red,   'drawPolygonFill', [125,400,150,300,175,300,175,375])
    doit(canvas, red,   'drawPolygonFill', [275,375,275,300,300,300,325,400])
    canvas.display()