ValueError Traceback (most recent call last)
1 a={1,3,4}
----> 2 c,d=a
ValueError: too many values to unpack (expected 2)
如何解决这个呢,多余的值可以用_号来接收,会将值通过_号放到一个列表里面
In [14]:
a={1,3,4}
c,d=a # 相当于一个列表的容器
print(d)
[3, 4]
In [17]:
a={1,3,4}
c,d=a
In [18]:
*d
File "
SyntaxError: can't use starred expression here
In [20]:
x=3100
y=3100
print(id(x))
print(id(y))
62574528
62574512
定义:用于将多个变量关联到同一个值(内存),只涉及一个值
In [23]:
x=y=2100
print(id(x),id(y))
66842656 66842656
等价于【y=2100,x=y】# 将自己的引用给x
注意:和【x=2100,y=2100】不同,这个时候x和y的引用不是关联到同一个内存值,虽然值大小是一样的,这里面涉及到了小整数池的概念
【此处经常会作为面试题!!】
1.小整数池目的:节省内存,提高执行效率 自己的话来说:在我们编写代码的时候需要使用到一些常用的整数,如果没有小整数池,那么每次都需要去申请内存空间,这样就会导致影响效率,
为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小 整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。
2.另外创建变量的值如果相同的话,创建的时间间隔又比较短,那么他们的内存空间的值是相同的。
3.在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理 了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。
In [30]:
x=2580
y=2580
print(id(x)) # 时间间隔过短的情况下
print(id(x))
66843312
66843312