v-ino 发表于 2021-8-26 16:21:36

第23讲动动手第一小题:写一个函数get_digits(n)

写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>
result = []
def get_digits(n):
      if n > 0:
                result.insert(0, n%10)
                get_digits(n//10)

get_digits(12345)
print(result)

想问下result不是全局变量吗?为什么函数内部还可以对其进行修改呢

小伤口 发表于 2021-8-26 16:26:12

全局变量是可以被本程序所有对象或函数引用。

小伤口 发表于 2021-8-26 16:26:52

全局变量可以被函数修改

v-ino 发表于 2021-8-26 16:35:25

小伤口 发表于 2021-8-26 16:26
全局变量可以被函数修改

您好不是说函数内部可以访问到全局变量,但如果去修改它,只会影响到局部变量吗,全局变量不是不应该变化吗

逃兵 发表于 2021-8-26 16:38:07

result是个容器(list)
局部变量不能改变他是个容器,但是可以改变容器里面的东西
变量实际上还指向这个容器,只是这个容器里面的东西变了

打个比方,搬家公司搬运衣柜,这个衣柜没有变化,但是衣柜里面的衣服可以换成帽子,也可以增加裤子

小伤口 发表于 2021-8-26 16:42:39

v-ino 发表于 2021-8-26 16:35
您好不是说函数内部可以访问到全局变量,但如果去修改它,只会影响到局部变量吗,全局变量不是不应该变化 ...

不可变的数据类型,是不能修改的,但列表是可变的,可以修改

v-ino 发表于 2021-8-26 16:51:54

逃兵 发表于 2021-8-26 16:38
result是个容器(list)
局部变量不能改变他是个容器,但是可以改变容器里面的东西
变量实际上还指向这个容 ...

明白了谢谢

v-ino 发表于 2021-8-26 16:52:26

小伤口 发表于 2021-8-26 16:42
不可变的数据类型,是不能修改的,但列表是可变的,可以修改

谢谢
页: [1]
查看完整版本: 第23讲动动手第一小题:写一个函数get_digits(n)