我是Python编程的新手,并且遇到全局变量问题。 我有这样的代码:
import ...
sentiment_words = {} #global variable
def getTweetSentiment(tweet_text):
sentiment = 0
words = extractWordsFromTweet(tweet_text)
for word in words:
if word in sentiments_words:
sentiment += sentiments_words[word] #sentiment_words is empty
return sentiment
def main():
global sentiment_words
sentiment_words = loadSentiments(open(sys.argv[1])) #setting new value
当我调用getTweetSentiment
函数时,它看不到sentiment_words
中的任何变量。能帮助我理解应该如何以正确的方式写出来吗?
答案 0 :(得分:1)
尝试使用课程。它比使用全局变量更好。
您可以通过sentimentTweet.sentiment_words
方式访问sentiment_words。
您的代码如下:
class sentimentTweet:
def __init__(self,d={}):
sentiment_words = d
def getTweetSentiment(self,tweet_text):
sentiment = 0
words = extractWordsFromTweet(tweet_text)
for word in words:
if word in self.sentiments_words:
sentiment += self.sentiments_words[word] #sentiment_words is empty
return sentiment
sTwitter= sentimentTweet(loadSentiments(open(sys.argv[1]))) #u r creating an instance of the class and loading it
print sTwitter.sentiment_words #Check, Try to print sentiment_words values
如果您有推文文字。您可以通过这种方式运行您的函数getTweetSentiment
。
t= "tweet_text" #I'm not sure how do you use this variable
returnedSentiment= sTwitter.getTweetSentiment(t) #This is how you run your function
print t
答案 1 :(得分:0)
您实际上是否在任何时候调用main()
函数?根据您提供的代码,它看起来不像您,这意味着loadSentiments()
将无法运行,因此sentiment_words
将保持不变(即它将保持定义为{}
})。
与C / C ++ / Java不同,Python程序不以main()
函数/方法开头。相反,程序从第一行运行到最后一行,因此您需要在文件底部添加以下内容:
if __name__ == "__main__":
main()
这将确保在直接执行文件时调用main()
函数。