鸡胗不好吃 发表于 2019-11-6 18:02:51

搞不懂全局变量

def get_digits(n):
    if n>0:
      temp.insert(0,n%10)
      return get_digits(n//10)

temp=[]
get_digits(12345)
print(temp)

这里标红的temp不是全局变量吗?为啥下面打印出来的temp是经过函数加工的temp

jackz007 发表于 2019-11-6 18:33:33

本帖最后由 jackz007 于 2019-11-6 18:37 编辑

      temp 是全局变量,在 Python 中有规定,全局变量在函数中只能读,不能写,意思是不能出现为全局变量赋值的操作,但是,可以利用对象的方法对对象进行编辑操作。在本例中,函数 get_digits() 正是通过列表的方法 insert(),对全局变量 temp 进行了编辑的操作,所以,最后从主函数中打印出来的列表 temp 才不是空的。

zltzlt 发表于 2019-11-6 20:59:54

temp 全局变量在 get_digit 函数中被列表方法修改(insert()),所以全局变量能改变(只能调用其方法及属性,但不能对它进行赋值操作)
页: [1]
查看完整版本: 搞不懂全局变量