Gerrard_27 发表于 2018-7-3 15:28:05

关于函数内部对变量操作的问题

请看以下shell下的代码,我想问的是:教学中说,函数内部改变变量的值,对外部的变量没有影响。可是如果以列表为例,函数内部执行list1= [],不会传递给外部;可是执行list1.append操作,就会传递给外部的变量了,这是什么道理?新手,求助{:5_110:}
>>> list1

>>> 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

>>> 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

>>> 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

>>> new_price = discount(100,0.08)
修改后old_price的值是1 50
>>> list1

>>>

BngThea 发表于 2018-7-3 15:41:10

因为这里的list是一个全局的变量,你的函数执行的时候对它进行了操作,当然会修改它

Gerrard_27 发表于 2018-7-3 16:14:45

谢谢回复,可是我没有声明是全局变量啊?另外我两次定义的函数除了一个用了=[],一个用了append方法外,其它没什么区别啊,能否进一步指点?谢谢
页: [1]
查看完整版本: 关于函数内部对变量操作的问题