当前位置:   article > 正文

Python 常见基础问题_python基础问题讨论

python基础问题讨论


最近有一些python的面试,发现比起算法题,很多python常见的问题反而被忽略了。就是只知道一些模糊的答案,可能在做题时能选出正确答案,但是无法解释基本概念。在这个记录一下遇到的问题。

深拷贝和浅拷贝

python中,主要有三种拷贝方式:直接赋值,浅拷贝(copy.copy)和深拷贝(copy.deepcopy).
具体地说,直接赋值就是二者保持一致,如下代码所示,当a中的元素发生变化时,b与a保持一致。
额外补充一点,如果对a进行重新赋值后,b与a不再保持一致。

a = [1,2,3]
b = a
a.append(4)
print(b)

#当a的类型发生变化或者重新赋值后,b与a不再保持一致
a = [5,6,7]
print(b)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
'
运行

浅拷贝不拷贝子对象,即子对象一致。

#在list a中还存在一个子list
>>>a = [1,2,3, [4,5], 4]
>>>b = copy.copy(a)
>>>a.append(5)
>>> a
[1, 2, 3, [4, 5], 4, 5]
>>> b
[1, 2, 3, [4, 5], 4]

#子对象保持一致
>>>a[3].append(6)
>>> a
>>> b
[1, 2, 3, [4, 5, 6], 4]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

深拷贝就是完全不一致。

可变和不可变数据类型

可变:list, dict, set
不可变:tuple, 数字和字符串

数字类型:

整型,浮点数和复数(这个不常用)
复数不常用,特别容易忽视。
复数的表达方式是 real + imagej。real是实部,image是虚部,二者可以用整数或浮点数来表示,j可以大写也可以小写。

装饰函数

被装饰的函数的名字会被当作参数传递给装饰函数。装饰函数执行它自己内部的代码后,会将它的返回值赋值给被装饰的函数
具体可以参考python的装饰器(函数装饰器),解释得非常到位。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/847071
推荐阅读
相关标签
  

闽ICP备14008679号