为什么未定义“ api”? 初学者

问题描述

我认为我将'api'定义为twitter.api,idk为什么会发生此错误 代码:

 import twitter


def auth():                      
    api = twitter.Api(consumer_key='CsqkkrnhBZQMhGLpnkqGqOUOV',consumer_secret='jzbWgRLZqIyJQjfh572LgbtuifBtXw6jwm1V94oqcQCzJd7VAE',access_token_key='1300635453247361031-EWTTGf1B6T2GUqWmFwzLfvgni3PoVH',access_token_secret='U2GZsWT0TvL5U24BG9X4NDAb84t1BB059qdoyJgGqhWN4')
                                
auth()
api.PostUpdate('Hello World')

 

错误:

Traceback (most recent call last):
  File "C:/Users/Xtrike/AppData/Local/Programs/Python/Python37/twitter python.py",line 11,in <module>
    api.PostUpdate('Hello World')
NameError: name 'api' is not defined

解决方法

对于您发布的内容,您需要启动bytes变量。它只是获取所有内容并执行api,但首先需要实例化它。

,

您可能需要学习Python中的local and global scopes。简而言之,您已经创建了局部变量let data ={ title : "Marc",id : "5f4fe3af49121f1516dee853",questions : [ { hidden : false,_id : "5f4fe6e30a8a04164d0af127",title : "How old are you ? " },{ hidden : false,_id : "5f4fe6e30a8a04164d0af129",title : "Where do you live" } ] }; let questions = []; questions = data.questions; console.log(questions); // Yes let counter; for (let i = 0; i < questions.length; i++) { console.log("hello"); if (questions[i].hidden === false) { counter += 1; } },该局部变量在函数外部不可见。

为解决所提供的错误,根据所需结果有不同的方法:

  1. 使用保留字api使变量在全局范围内可见:
global

但是我不建议在没有适当注意的情况下使用全局变量

  1. 提供的代码很小,因此无需包装到其他功能中
def auth():
    global api # This does the trick publishing variable in global scope
    api = twitter.Api(consumer_key='<>',consumer_secret='<>',access_token_key='<>',access_token_secret='<>')
                                
auth()
api.PostUpdate('Hello World') # api variable actually published at global scope
  1. 从函数返回对象-我建议这种方法最合适,最可靠
api = twitter.Api(consumer_key='<>',access_token_secret='<>')
                                
api.PostUpdate('Hello World')

最后但很重要的一句话:避免在公开帖子中公开秘密-解决方案不需要这些秘密,但可能会给他们带来破坏。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...