Как обратиться к переменным из другой функции?

def add_watermark_imp(image, watermark, opacity=1):
    assert 0 <= opacity <= 1
    if opacity < 1:
        if watermark.mode != 'RGBA':
            watermark = watermark.convert('RGBA')
        else:
            watermark = watermark.copy()
        alpha = watermark.split()[3]
        alpha = ImageEnhance.Brightness(alpha).enhance(opacity)
        watermark.putalpha(alpha)
    layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
    layer.paste(watermark, (a, b))  <- как тут взять переменные с функции start?
    return Image.composite(layer, image, layer)

@KB191.message_handler(content_types=['text'])  
def start(message):
    if message.text == "/start":
        KB191.send_message(message.from_user.id, "...")
        if message.text == "там та":
            a = 300
            b = 500
        elif message.text == "там та...":
            a = 600
            b = 400
        else:
            pass

Ответы (1 шт):

Автор решения: Сергей Ш

параметры лучше передавать в функций add_watermark_imp(image, watermark, opacity=1, a, b), но можете попробывать вот так:

temp = [300, 500]

def add_watermark_imp(image, watermark, opacity=1):
    ....
    layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
    a, b = temp
    layer.paste(watermark, (a, b))
    return Image.composite(layer, image, layer)

@KB191.message_handler(content_types=['text'])  
def start(message):
    ....
        if message.text == "там та":
            temp[0] = 300
            temp[1] = 500
        elif message.text == "там та...":
            temp[0] = 600
            temp[1] = 400
        
→ Ссылка