首页
登录 | 注册

Python基础提高

  1. 什么是GIL?GIL对多线程的影响
    GIL全称Global Interpreter Lock(全局解释器锁)。GIL和Python语言没有任何关系,只是因为历史原因导致在官方推荐的解释器Cpython中遗留的问题。(多线程)每个线程在执行的过程中都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,但是当遇到IO阻塞会自动的释放GIL锁,所以使用多线程还是比单线程的效率要高。如果想发挥多核CPU资源,可以使用多进程。为了避免受GIL的影响可以不用官方推荐的Cpython,或者用其他语言来实现,使用多进程。
    计算密集型建议采用进程
    IO密集型建议采用线程或者协程

2.深拷贝和浅拷贝

浅拷贝是对一个对象的顶层(外层)拷贝,只是拷贝了引用,并没有拷贝内容。
变量的赋值是地址的引用,也算是一种浅拷贝。
copy.copy()
 
深拷贝则是对一个对象深层(递归)的拷贝,保证了数据的独立性。
copy.deepcopy()

可变类型:列表、字典
不可变类型:数字类型、字符串型、元组

如果是可变类型,浅拷贝只拷贝外层,而深拷贝是完全拷贝
 
如果是纯的不可变类型,那么无论是浅拷贝还是深拷贝,都只是指向同一个地址。如果不可变类型里面还存在可变类型,则浅拷贝是指向,而深拷贝则为完全拷贝。

3.私有化

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

4.模块搜索顺序

import sys
sys.path  # 返回查找模块的列表目录,列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序。第一个元素返回的是一个空字符串表示当前目录。
sys.path.append('/home/itcast/xxx')  # 在列表最后追加搜索目录
sys.path.insert(0, '/home/itcast/xxx')  # 可以确保先搜索这个路径

5.重新导入模块

from imp import reload
reaload(模块名)

(必须得先import 模块)

6.多模块开发时注意事项
通过from 模块 import 变量,此时相当于给一个变量赋值,如果在程序中修改了变量的值就导致这个变量成了局部变量,跟其他模块就不共享了。如果多模块开发时想导入变量,建议使用import 模块名的方式,然后通过模块名.变量的方式去调用。
7.面向对象的三大特性(封装、继承、多态)
封装就是把方法和属性封装到类(类是抽象的,不能直接使用)的内部,只需要在类的外部,通过对象即可调用。继承实现了代码的重用。子类可以继承父类,并且可以继承多个父类即多继承,子类可以使用父类所拥有的属性和方法(除了私有属性和方法)。多态是以继承和重写父类方法为前提,增加了代码的灵活度,只是一种调用技巧。(并不能提高程序的运行速度)

封装:对受访问保护的成员进⾏功能开放的控制,达到保护数据不被⾮法访问的⽬的。
继承:⼀种类间关系,⼀个类A从另⼀个类B获取成员信息,称类A继承⾃类B。 提供成员信息的类称⽗类(基类),获取成员信息的类称⼦类(派⽣类)。
⼦类可以添加⽗类没有的成员
⽗类私有成员不可被继承
多继承:⼀个类同时继承多个类,称为多继承。 class 类名(⽗类名1,⽗类名2…)
多态:⼀个对象具有多种形态,在不同的使⽤环境中以不同的形态展示其功能,称该对象具有多态特征。多态通常发⽣在继承关系的基础之上。


相关文章

  • 前端基础---JS基础
    背景介绍 Javascript 是一种运行在客户端的脚本语言 应用场景: 1.网页特效 2.服务端开发(Node.js) 3.命令行工具(Node.js) 4.桌面程序(Elextron) 5.APP(Cordova) 6.控制硬件-物联网 ...
  • 深浅拷贝的定义: 浅拷贝只是增加了一个指针指向一个存在的地址, 深拷贝是增加一个指针并且开辟了新的内存,这个增加的指针指向这个新的内存, 采用浅拷贝的情况,释放内存,会释放同一内存,深拷贝就不会出现释放同一内存的错误 一层的情况: impo ...
  • 字符串: 字符串用单引号(')或双引号(")括起来,不可变 1,find通过元素找索引,可切片,找不到返回-1 2,index,找不到报错. 3,split 由字符串分割成列表,默认按空格. 4,captalize 首字母大写,其 ...
  • 电厂锅炉,火电厂三大主力设备之一.在电厂生产过程中发挥了极其重要的作用,是火电厂生产所必不可少的重要设备.但是,近些年,因为锅炉安全管控不到位而造成的事故屡有发生,给电厂的财产及人员的生命造成极大威胁.分析电厂锅炉的泄漏原因,制定有针对性的 ...
  • 对话阿里云Alex Chen:下一代存储应如何面对云转型?
    数字经济"乘云而上". 十年前,阿里云开始自主研发云计算操作系统飞天之路,开启了中国云时代: 十年后,阿里云在中国市场份额超过2-8名总和,培育了整个中国云计算市场,数字经济在云上蓬勃发展. 十年前,EMC.NetApp ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.285 s.
京ICP备10005923号