Python 需要搞清楚的基本原理整理

【1】关于可变类型和不可变类型:

https://blog.csdn.net/liweiblog/article/details/53004972?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

总的来说,就是 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值