运行练习编写的Twitter bot脚本报cannot assign function to call错误
错误原因排查
- 核心语法错误出现在Tweepy API实例化的代码行,你误将
wait_on_rate_limit、wait_on_rate_limit_notify两个配置参数写在了tweepy.API()的括号外部,而非作为函数入参放在括号内。
错误代码行如下:
api = tweepy.API(auth), wait_on_rate_limit=True, wait_on_rate_limit_notify=True
- 这种写法在Python语法中属于非法赋值逻辑:你试图将函数调用返回值、两个关键字赋值的结果组合为元组赋值给
api变量,Python无法解析该逻辑,因此抛出cannot assign function to call报错。 - 此前另一台设备运行正常,大概率是你拷贝/录入代码时意外改动了括号的闭合位置。
修复方案
将两个配置参数移入tweepy.API()的括号内即可,完整修正代码如下:
import tweepy import time auth = tweepy.OAuthHandler ('g8tFLVnImSSbV8bretFmmpG6D','A040svsUjF3sovM7kKZdPE2Z8W1GKMPIQos7oHAM290NWMF7j8') auth.set_access_token('1443589399866855426-ZTsv2XybAPgtGslBElCujAfjRumtmp','Sb5AWSJnZuvwLkxLDPLsO9jizKK1reM4NJ8h2fG293P3G') # 修正参数位置,将所有入参放入API方法的括号内 api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) user = api.me() print(user)
补充说明:如果修正语法问题后运行出现
me()方法不存在的报错,是因为你当前环境安装的是Tweepy 4.x以上版本,该版本已移除me()方法,将api.me()替换为api.verify_credentials()即可正常运行。
内容的提问来源于stack exchange,提问作者Heather Harper
相关产品推荐
相关产品推荐

