Python列表生成,集合,模块路径问题,==和is,深浅拷贝,私有化,property的使用

本文深入探讨Python的列表生成式、集合与字典的使用技巧,解析深拷贝与浅拷贝的区别,以及私有属性和property装饰器的运用。通过实例说明Python中对象比较与内存地址的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表生成式:      range(3)  --->[0,1,2]         b=[i for i in range(10) if i%2==0]   只有在range(10)中且i%2==0  才能给了前面的i

 

集合set     {11,22,33}  和字典类似  都用大括号 但里面不是键值对  且元素不重复

a=[11,22,33,11,22]      b=set(a)  a=list(b)  实现了一个列表去重 

 

sys.path.append("../")  模块的导入路径中添加当前路径

 

修改了某个模块后需要重新导入  from imp import *   reload(test)  重新导入加载test模块

 

 

a=[11,22,33]

b=[11,22,33]

a==b   #True  判断内容

a is b   #False   判断id(a)和id(b)

 

深拷贝和浅拷贝

指向相同的地址即为浅拷贝

import copy

c=copy.deepcopy(a)  拷贝a里面所有的值到另一个空间  即指向的空间不同为深拷贝    深度拷贝是递归深度拷贝的,不管如何引用都可以拷贝出来作为单独的空间中

c=copy.copy(a)  只拷贝指向a的地址到c中 ,且c和a是不同地址  但内容指向的是同一个地址  即只能拷贝第一层 (注意:如果a是不可变类型,那么a 和c是同一个地址)

 

_x单前置下划线,私有化属性或方法  from  somemodule import *禁止导入,类对象和子类可以访问

__num私有属性其实也是可以访问的  需要加上类名   本质上它变成了 _Test__num 可以通过t._Test__num调用

私有变量一般有get set方法  getNum()  setNum()

property:

num=property(getNum,setNum)

这样设置时候  可以通过直接赋值的方法给__num私有变量赋值   t.num=200  通过property给__num赋值200  Python解释器内部自动调用get set方法

@property

  def money(self.value):

        return self.__money

@money.setter

def money(self.value):  #money是提供给外界用的名字

          self.__money=value

 

property的另一种用法  getter和setter有同样的名字

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值