变量类型从全局变量变为方法变量为什么?

时间:2015-08-10 19:38:20

标签: python methods global-variables

我全局启动变量然后当我去更改变量时,它的类型从字典(好)变为字符串(坏),我有点确定原因但不是真的。我不是100%的python范围。

完整的代码如下所示请注意我有很多我用作测试的打印声明。我将问题的所有代码都包括在内,以便全面了解我要做的事情。

totalEntries = 0
print 'this is first ' + str((type(totalEntries))) #prints type int (good)
perPage = 0
currentPage = 1
Pcity = ''

api_data = ''
is_last_page = False
apiCallNum = 1
tableDefined = False


def getApiData(city):
    global Pcity
    global apiCallNum
    global apiEndpoint
    Pcity = city
    apiEndpoint = #just a link ignore this

    api_data = requests.get(apiEndpoint).json()
    print(api_data)
    print('your testing this' + str(type(api_data))) #prints dict (good)

    print ("Current API Call " + str(apiCallNum))

    apiCallNum += 1



    print('your testing this' + str(type(api_data))) #prints dict (good)


def populateVars():
    global totalEntries

    print "this is second " + str(type(totalEntries)) #prints int (good)

    print('your testing this' + str(type(api_data))) #prints string (bad)
    totalEntries = api_data['total_entries']

谢谢大家

1 个答案:

答案 0 :(得分:2)

api_data内对getApiData所做的分配在其他任何地方都无法显示,因为您没有将其标记为全局。

global api_data添加到getApiData的开头。

顺便提一下,如果要分配给全局变量,只需要全局语句 - 您可以在没有语句的情况下访问它们的值。严格来说,你不需要global apiEndpoint