python修炼day37!

本文阅读时长大约为5分钟

今日内容概述:

在浏览器中访问服务器的过程、GIL全局解释器锁、深拷贝、浅拷贝、私有化、模块的导入 。

在浏览器中访问服务器的过程

先去DNS服务器那里去解析域名,得到http服务器ip地址,再进行三次握手,数据传输,四次挥手。

NAT 网络地址转换器

NAT 是在路由器的功能上添加了地址转换

宽带ip每天都在变,不适合做服务器

GIL 全局解释器锁

这个问题和python语言没有关系,是解释器的问题

it’s not easy to remove the GIL. 吉多的声明

同一时刻只允许有一个线程在运行,所以多线程是假的并发,只在 c 语言写的python解释器中有,其他语言写的解释器没有这个问题

多线程比单线程要快

计算密集型:一直不停的计算,使用进程,发挥多核的性能

IO密集型: 有等待的过程 , 使用线程

解决GIL问题的两种解决办法

不使用cpython解释器,使用其他的解释器jpython

python解释器默认是cpython

替换成其他语言的代码执行

明早任务:聊聊python中的多任务

深拷贝、浅拷贝

什么是深拷贝

在复制的时候直接把数据拷贝一份

深拷贝测试时不会影响原来的数据

什么是浅拷贝

在复制的时候仅仅只复制引用,而数据共用一份

浅拷贝可以节约资源

列表的深拷贝、浅拷贝

浅拷贝拷贝的是引用 新建一个空间,内容拷贝引用

深拷贝拷贝的是数据 新建一个空间,列表里面列表引用指向的数据也会拷贝一份

元组的深拷贝、浅拷贝

元组中存储不可变类型数据:copy()、deepcopy() 拷贝引用,而不会拷贝数据

元组中存储可变类型数据:copy() 拷贝引用,deepcopy() 拷贝数据

如果用 copy()、deepcopy() 对一个都是不可变类型的数据进行拷贝,那么它们结果相同,都是引用

如果拷贝的是一个拥有不可变类型的数据,即使元组是最外层,那么 deepcopy() 依然是深拷贝,copy() 还是指向引用。

字符串、切片、字典的深拷贝浅拷贝

切片是浅拷贝

字典中存储的都是 key 所对应 value 的引用

字典的 copy() 是浅拷贝

私有化

xx:公有变量

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

__xx:双前置下划线,避免与子类中的属性命名冲突,无法再外部直接访问(名字重整所以访问不到 “ 重整指的是会在属性名字前加上类名”)

_xx_:双前后下划线,用户名字空间的魔法对象或属性。按公有属性处理,可以被继承。不要自己发明这样的名字。

xx__: 但后置下划线,用于避免与python关键词的冲突。

父类中属性名为的,子类不继承,子类不能访问

如果在子类中向赋值,那么会在子类中定义的一个与父类相同名字的属性

的变量、函数、类在使用时都不会被导入

导入模块

import xxx

import xxx as yyy

from xxx import *

from xxx import zzz

from xxx import zzz as ddd

from imp import reload # 重新导入模块

sys.path:可以以列表的形式列出导入模块时查找的各个路径

今日内容仍然以概念为主,所有仍然昏昏欲睡,大体是记住了,不过总感觉少点细节没有记住,回头再细细看看。

- End -

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180825G1BNTO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券