| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
请看以下shell下的代码,我想问的是:教学中说,函数内部改变变量的值,对外部的变量没有影响。可是如果以列表为例,函数内部执行list1= [],不会传递给外部;可是执行list1.append操作,就会传递给外部的变量了,这是什么道理?新手,求助   
>>> list1 
[50, 50, 50] 
>>> def discount(price,rate): 
        final_price = price*rate 
        #old_price =50 
        list1.append(old_price) 
        print('修改后old_price的值是1',old_price) 
        return final_price 
 
>>> new_price = discount(100,0.08) 
修改后old_price的值是1 1000 
>>> list1 
[50, 50, 50, 1000] 
>>> def discount(price,rate): 
        final_price = price*rate 
        old_price =50 
        list1.append(old_price) 
        print('修改后old_price的值是1',old_price) 
        return final_price 
 
>>> new_price = discount(100,0.08) 
修改后old_price的值是1 50 
>>> list1 
[50, 50, 50, 1000, 50] 
>>> old_price 
1000 
>>> def discount(price,rate): 
        final_price = price*rate 
        old_price =50 
        list1=[] 
        print('修改后old_price的值是1',old_price) 
        return final_price 
 
>>> list1 
[50, 50, 50, 1000, 50] 
>>> new_price = discount(100,0.08) 
修改后old_price的值是1 50 
>>> list1 
[50, 50, 50, 1000, 50] 
>>>  
因为这里的list是一个全局的变量,你的函数执行的时候对它进行了操作,当然会修改它 
 
 
 |   
 
 
 
 |