关于全局变量
result = []def xiatiya(n):
if n > 0:
result.insert(0,n%10)
xiatiya(n // 10)
xiatiya(12345)
print(result)
这里def为啥可以对result这个全局变量进行修改呢?我并没有声明global呀 基础问题看教程:https://www.runoob.com/python3/python3-namespace-scope.html 你把result写在了最外侧,没有程序块的包裹,不加global他也是全局变量 踩个点 本帖最后由 傻眼貓咪 于 2021-10-8 10:06 编辑
var = # 这是全局变量
def A():
var.append("banana") # 这里的 var 是全局变量,增加新值
def B():
var = # 定义一个新列表,取和函数外面的全局变量相同名字 var,虽然名字相同,但一个是局部变量,一个是全局变量
var.append("apple") # 这里的 var 变成局部变量,增加新值,完全不影响全局变量(意思就是函数内部变量自己跟自己玩)
A() # 会影响全局变量
B() # 不影响全局变量
print(var)
def C():
global var # 定义全局变量(意思就是说这里不管怎样,只要我用 var 就是全局变量)
var = # 改变全局变量的地址和值
var.append("小白") # 增加新值
C() # 会影响全局变量
print(var)
因为result是列表,属于序列,不用声明,甲鱼讲过。{:10_256:} 傻眼貓咪 发表于 2021-10-8 10:05
这就意味着 变量如果是列表的话不申明global全局变量就可以对全局变量进行更改,仅限于更改,例如append,insert,但是如果要重新定义一个同名函数的话,就会变成局部变量 就例如def B()这个例子,我能这么理解吗
页:
[1]