python面试宝典2

三范式

1.一个数据一个字段
2. 只要有主键的
3. 减少重复

GIL

叫什么:全局解释器锁cpython
有什么用:单核的情况下实现多任务
怎么解决:
    换解释器锁jpython
    进程加协程(个人建议)
    线程用其他语言实现,python调用

python面试宝典2_第1张图片

深拷贝与浅拷贝

深拷贝

递归拷贝每一层的数据

python面试宝典2_第2张图片

浅拷贝

拷贝第一层的数据

python面试宝典2_第3张图片

注意:深浅拷贝后会产生一个新的地址,对于不可变类型(int,str,tuple)不会产生新的id;原数据发生改变,浅拷贝的数据改变,深拷贝的数据不变

跟引用的区别

引用:多个变量指向同一个内存地址
拷贝:产生一个新地址(不可变类型不会产生,int,字符串,元组)
深拷贝与浅拷贝在拷贝不可变类型时,都不会开辟新的空间,直接引用

python基本上如果提供了copy方法都是浅copy

私有化

_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字
xx_:单后置下划线,用于避免与Python关键词的冲突

模块搜索路径

sys.path  模块查找时的路径
import sys

# import test_03

print(sys.path)  # 搜索路径:模块查找时的路径

# sys.path.append("/home/python/Desktop/")    # 在后面添加路径
sys.path.insert(0, "/home/python/Desktop/")   # 在前面添加路径
print(sys.path)

import test_03    # 更改搜索路径后再导包

test_03.myprint()

模块更新

现象
python面试宝典2_第4张图片
解决方案
python面试宝典2_第5张图片

导入两种模块方式的区别

import  **** 这个可以当做是引用
from **** import *** 这个可以当做深拷贝

*多模块开发导入分析:
python面试宝典2_第6张图片

面向对象

python面试宝典2_第7张图片

你可能感兴趣的:(python面试宝典2)