有没有办法在Python中调用函数内部的变量?

问题描述 投票:0回答:1

我最近开始学习Python,因为工作机会,所以今天我决定用我所学的知识来做一个练习,我正在用Python为Telegram创建一个机器人,然后我遇到了这种情况:我需要调用将另一个文件中的变量添加到主文件中。为了使代码更清晰,我将代码分成几个文件,一个文件用于调用 api,另一个文件是主文件,另一个文件是机器人命令,为了能够从 api 调用变量,我创建了一个函数,但我不知道是否可以从这个函数中调用变量:

def botApi(SHINEAPI, bot):
    SHINEAPI = decrypt_api_key()
    bot = telebot.TeleBot(SHINEAPI)
    return botApi

我需要为这个装饰器调用 bot 变量:

@bot.message_handler(commands=['start'])
def respostaPadrao(mensagem):
    ....

有谁知道有什么办法吗?

我已经尝试询问我的技术课程老师,但他仍然没有回答,我尝试过搜索,但我没有找到任何客观回答我的问题的东西......并且我还尝试将其声明为全局变量,但它给出了一个错误。我忘了提及,我也尝试过将其作为返回函数调用,但我无法调用变量,只能调用函数,即使我尝试将变量作为参数传递,它也不起作用...

python python-3.x
1个回答
1
投票

您应该在不带参数的情况下定义它,并使用

return
在函数外部发送值

def botApi():
    SHINEAPI = decrypt_api_key()
    bot = telebot.TeleBot(SHINEAPI)
    return bot

或更短

def botApi():
    return telebot.TeleBot(decrypt_api_key())

然后运行它

bot = botApi()

但是您应该只运行一次,因为如果再次运行它,它可能会执行以下操作之一:

  • 引发错误,因为与服务器的连接已被使用
  • 杀死之前的机器人并创建新的机器人 - 之前的
    @bot.message_handler
    将会丢失
  • 创建新的机器人,您将运行两个机器人 - 一个机器人将与某些
    @bot.message_handler
    一起工作,另一个机器人将与其他
    @bot.message_handler
    一起工作 - 他们不知道哪一个机器人处理新命令。

如果您必须在其他文件中使用它,那么您应该将此文件导入到主代码中,并发送

bot
(您已经拥有)作为参数。

© www.soinside.com 2019 - 2024. All rights reserved.