【1】关于可变类型和不可变类型:
总的来说,就是 1 是int 型。那么是不可变类型,a,b,c都是他的名字,只要这个人还没死,那么它的名字可以有很多个。死了->再也没用了,就被垃圾回收了。
[1,2]是可变数据类型,list型。那么它占用了一块内存,无论他怎么整容的再像别人,他都是他自己。即使还有一个人和他撞了,那也不是他,他们也不可能相同(不是一块内存地址)。
【2】局部变量和全部变量区别 主要是global的使用
https://blog.csdn.net/zhaogeno1/article/details/80298702
【3】由于不可变类型和可变类型的区别,那么在参数传入的时候,也会有所不同。
https://blog.csdn.net/abc_12366/article/details/79627263
函数内部的形参是实参的别名; Python唯一支持的参数传递方式是『共享传参』
count = 0
nums = [0,2]
print(id(count),id(nums ))
def add(nums,count):
nums.append(1)
print(id(nums))
count = count+1
print(id(count))
add(nums,count)
print(nums)
print(count,id(count))
output:
1716612544 988916722440
988916722440
1716612576 ## count 的内存地址变了
[0, 2, 1]
0 1716612544
由于nums是可变数据类型,那么它的地址就是一块内存空间,不管是形参还是实参,他都是一块内存。不管是在函数体内还是函数体外,那么它改变了。所以内存地址一直是:988916722440.
count是不可变类型,那么它把值赋给了 函数里面的参数 count = count[传进来的参数]+1 =2。由于2是不可变类型,那么现在的count(名字)指向了2的内存地址。count(传入的参数)的内存地址并没有改变,还是1。所以它的值也没有改变。
有点像,妈妈传进来了用了一下妈妈生了一个(2)。那么妈妈还是妈妈,(2)是他的儿子是不同的个体了。
nums就像是妈妈生他之前做了整容,但是妈妈还是妈妈,只是面貌改变了。
【4】Python的复数机制
来自:https://www.runoob.com/w3cnote/python-complex-intro.html
(1)实部、虚部都是浮点数
(2)不能只有虚部,只能是实部为0.0,存在虚部
(3)虚部用J 和 ‘j’都可以,且必须带J或‘j’
(4)表示虚数的语法:real+imagej
(5)复数对象拥有数据属性,分别为该复数的实部和虚部。复数还拥有 conjugate 方法,调用它可以返回该复数的共轭复数对象。1.1+3.4j 其共轭复数为 1.1-3.4j