如何解决为什么未定义“ 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;
}
}
,该局部变量在函数外部不可见。
为解决所提供的错误,根据所需结果有不同的方法:
- 使用保留字
api
使变量在全局范围内可见:
global
但是我不建议在没有适当注意的情况下使用全局变量
- 提供的代码很小,因此无需包装到其他功能中
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
- 从函数返回对象-我建议这种方法最合适,最可靠
api = twitter.Api(consumer_key='<>',access_token_secret='<>')
api.PostUpdate('Hello World')
最后但很重要的一句话:避免在公开帖子中公开秘密-解决方案不需要这些秘密,但可能会给他们带来破坏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。