python学习总结

1、关于python中函数的参数初始化的问题:函数的初始化值是在函数定义的时候就获取了的。如果后续调时不把修改过后的参数赋值进去,那么使用的就是第一次初始化的值。另外一个问题就是调用函数时传递进去的参数是类似于C语言的传递变量的指针进去,他会修改掉变量在内存中的值。所以在多次调用的情况下,变量的值是会修改的。比如下面一段代码:

x = [1 , 2 , 3 ,4 , 5]

def functest(y = x[:]):
    for i in range(len(y)):
        y[i] += y[i] 
        print y[i],
        
    print '\n'

x = [7 , 8 , 9 ,10 , 11]

functest()

functest()

functest(x)

functest(x)

其输出的结果如下所示:

2 4 6 8 10 
4 8 12 16 20 
14 16 18 20 22 
28 32 36 40 44 

分析:第一次调用functest()时,使用的是默认的函数参数,所以x = [1,2,3,4,5];调用之后对x这个变量直接操作(操作x变量的内存)使得经过一次调用后x内存中的内容以及变成[2 , 4 , 6 , 8 , 10];之后在调用一次functest(),那么重复对x的内存操作,输出结果为4 8 12 16 20;

之后第二次对x赋值为7 8 9 10 11;重新调用functest,那么原理和上面的就是一样的了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值