今晚收获挺大,学到了不少非常重要的 python
语法知识,一定程度上解答了我去年遗留的几个问题, 这种郁结一旦被打开,心情就非常舒畅.
-
[1]
python
与C++
中的变量、对象和引用的联系和区别。(参考) -
[3]
python
中的可变对象和不可变对象。(参考) -
[4]
python
中的函数调用时的值传递和引用传递。(参考)
直觉上这个知识点可能会解答我去年遗留的另一个问题.
上述知识点当然不是我闲得蛋疼收集的, 而是出于一个目的:我设计了一个简单的递归函数,想用一个变量对函数调用次数进行计数.
用全局变量的方法可以参考知乎回答: 戳我
我想用函数参数传递的方式来共享这个计数值. 下面是我一些 toy code
:
# 用不可变对象做计数值("值传递")
def fib(n, count):
count += 1
print(id(count))
print(count)
if n==0:
return 0
else:
return fib(n-1, count)
count = 0
fib(5,count)
print('-------------')
print(count)
#out:
10919424
1
10919456
2
10919488
3
10919520
4
10919552
5
10919584
6
-------------
0
# 用可变对象做计数值("引用传递")
def fib(n, count):
count[0] += 1
print(id(count))
print(count[0])
if n==0:
return 0
else:
return fib(n-1, count)
count = [0]
fib(5,count)
print('--------------')
print(count)
#out:
139628045793672
1
139628045793672
2
139628045793672
3
139628045793672
4
139628045793672
5
139628045793672
6
--------------
[6]
作 者: 月牙眼的楼下小黑
联 系: zhanglf_tmac (Wechat)
声 明: 欢迎转载本文中的图片或文字,请说明出处
网友评论