发布于2019-08-18 11:36 阅读(1012) 评论(0) 点赞(27) 收藏(0)
在这篇文章中,我们将归纳一些面试中常见的python基础知识:
浅拷贝:数据半共享(复制其数据独立内存存放,但只针对第一层数据)
l1 = [1,2,3,[11,22,33]]
l2 = l1.copy() # 浅拷贝,只拷贝第一层
print(l2) #[1,2,3,[11,22,33]]
l2[3][2]='aaa' # 数据中的第二层是共享内存的
print(l1) #[1, 2, 3, [11, 22, 'aaa']]
print(l2) #[1, 2, 3, [11, 22, 'aaa']]
l1[0]= 0 # 数据中的第一层是相互独立的,修改时互不影响
print(l1) #[0, 2, 3, [11, 22, 'aaa']]
print(l2) #[1, 2, 3, [11, 22, 'aaa']]
print(id(l1)==id(l2)) #Flase
深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享)
import copy
l1 = [1, 2, 3, [11, 22, 33]]
l2 = copy.deepcopy(l1) # 深拷贝
print(l1,'>>>',l2)
l2[3][0] = 1111
print(l1,">>>",l2) # 深拷贝就是彻底地复制了一份全新的变量,它们数据不会互相影响,因为内存不共享
id(object)
a = [1, 2, 3]
b = a[:] # 切片
a[1:] = [] # 切片赋值
# 方法1:
x,y = y,x
# 方法2:
x = x + y
y = x - y
x = x - y
class Student(object):
@property
def score(self):
return self._score
@score.setter
def score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value
@property修饰的变量可以通过只定义getter方法,不定义setter方法,实现只读属性
real + image j
作者:搞笑
链接:https://www.pythonheidong.com/blog/article/48678/6c451c3b62206ad664b0/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!