| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
result = [] 
def xiatiya(n): 
    if n > 0: 
        result.insert(0,n%10) 
        xiatiya(n // 10) 
 
xiatiya(12345) 
print(result) 
 
这里def为啥可以对result这个全局变量进行修改呢?我并没有声明global呀
 本帖最后由 傻眼貓咪 于 2021-10-8 10:06 编辑 
- var = [1, 2, 3] # 这是全局变量
 
  
- def A():
 
 -     var.append("banana") # 这里的 var 是全局变量,增加新值
 
  
- def B():
 
 -     var = [0, 0, 0] # 定义一个新列表,取和函数外面的全局变量相同名字 var,虽然名字相同,但一个是局部变量,一个是全局变量
 
 -     var.append("apple") # 这里的 var 变成局部变量,增加新值,完全不影响全局变量(意思就是函数内部变量自己跟自己玩)
 
  
- A() # 会影响全局变量
 
 - B() # 不影响全局变量
 
  
- print(var)
 
  
- def C():
 
 -     global var # 定义全局变量(意思就是说这里不管怎样,只要我用 var 就是全局变量)
 
 -     var = [0, 0, 0] # 改变全局变量的地址和值
 
 -     var.append("小白") # 增加新值
 
  
- C() # 会影响全局变量
 
  
- print(var)
 
  复制代码- [1, 2, 3, 'banana']
 
 - [0, 0, 0, '小白']
 
  复制代码 
 
 
 |   
 
 
 
 |