python理论加强(一)

GIL(全局解释器锁)

  • GIL只应用于Cpython解释器,GIL是把互斥锁
  • 由于Cpython无法应对多个线程同时对系统资源的请求,所以需要GIL对全局资源上锁,使得线程能交替(并发)使用全局资源
  • GIL是解释器层面的,互斥锁是代码层面的,注意线程对全局变量的使用还是要加互斥锁
    在这里插入图片描述
  • GIL锁在线程执行完,线程阻塞,超时时自动释放,如不存在以上条件,则根据其计数器结束
  • GIL影响:多线程交替并发执行,不能利用多核cpu。如想避免这些影响,可以使用多进程或者用c,c++写多线程函数再由python调用

python运算符问题

python中运算符计算实际上是解释器自动调用魔法方法,如__add__,__sub__

在这里插入图片描述

python整除,取余

在这里插入图片描述

赋值,浅拷贝,深拷贝

  • 赋值是引用的传递,两个对象指向的同一片空间

在这里插入图片描述

  • 浅拷贝

    浅拷贝只拷贝目标顶级的引用,不会对结构层次进行拷贝,如下b浅拷贝只是把a[3]列表的引用进行的拷贝,当a[3]列表内容改变时,b也随之更改

    import copy
    a=[1,2,3,[4,5]]
    b=copy.copy(a)
    
    a[3].append(3)
    
    # a=[1,2,3,[4,5,3]]
    # b=[1,2,3,[4,5,3]]
    

在这里插入图片描述

  • 深拷贝

    深拷贝相对于浅拷贝来说,深拷贝会对所有层次结构进行拷贝

    import copy
    a=[1,2,3,[4,5]]
    b=copy.copy(a)
    
    a[3].append(3)
    
    # a=[1,2,3,[4,5,3]]
    # b=[1,2,3,[4,5]]
    

在这里插入图片描述

  • 分片属于浅拷贝

  • copy.copy对于可变类型,会进行浅拷贝

  • copy.copy和copy.deepcopy对于不可变类型没有意义,全部等价于对象之间的赋值操作。

import模块导入

import 导入模块
import 模块名

3.1 导入指定目录下的模块

	1 重启之后需要重新添加路径 重新导入
		import sys
		修改sys.path变量中路径 

	2 修改之后一直有效 

	  vim ~/.bashrc
	  export PYTHONPATH=$PYTHONPATH:/home/python/Desktop
	  保存退出  刷新文件
	  :wq      source ~/.bashrc
3.2 重新加载模块

	因为import在第一次导入的时候会创建一个模块对象 
	当后续再次import 的时候  会直接使用已有的模块对象

	py2 
		reload(myapp)

	py3
		from imp impor reload
		reload(myapp)

3.3 import A 过程
	1 先判断模块A是否存在模块对象 存在就直接使用 ; 如果没有进行2
	2 sys.path路径下进行模块的搜索A.py文件 如果能够找到就进行3  否则报错
	3 根据磁盘的py文件  创建模块对象 并且 在当前作用域创建一个和模块名同名的对象 A
		A对象中保存的时候 模块对象的引用
	4 通过A调用其中任何方法  函数  类 变量

3.4 from A import B
	1 先判断模块A是否存在模块对象 存在就直接使用 ; 如果没有进行2
	2 sys.path路径下进行模块的搜索A.py文件 如果能够找到就进行3  否则报错
	3 根据磁盘的py文件  创建模块对象 并且 在当前作用域创建一个 和模块中属性同名的 对象B
	4 通过B调用

3.5 from-import 和 import区别
	locals()查看当前作用域中 名字

	from-import 保存模块中属性的引用在本地作用域
	import      保存模块的     引用在本地作用域
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 是一种高级、解释型、通用的编程语言,以其简洁的语法和丰富的库而受到开发者喜爱。它的理论基础主要包括以下几个关键点: 1. **动态类型系统**:Python 是动态类型语言,不需要在声明变量时指定其数据类型,变量的类型会在运行时自动确定。 2. **解释执行**:Python 代码不是编译成机器语言,而是逐行解释执行,这使得它具有更高的可读性和灵活性。 3. **面向对象编程(OOP)**:Python 支持封装、继承和多态等 OOP 原则。类和对象是其核心概念,通过定义类来创建对象,并通过方法(函数)来操作这些对象。 4. **函数式编程特性**:Python 提供了高阶函数、匿名函数(lambda表达式)、以及列表推导等特性,支持函数作为一等公民。 5. **模块和包管理**:Python 通过 `import` 关键字来组织和复用代码,使用 `pip` 进行包管理,如安装第三方库。 6. **异常处理**:Python 使用 try/except 块来捕获和处理程序运行时可能出现的错误,保证代码的健壮性。 7. **元编程**:Python 允许程序员在运行时修改或扩展代码的行为,提供内建的元类功能。 8. **迭代器和生成器**:Python 强调序列操作的高效性,提供了迭代器和生成器的概念,用于处理大量数据。 9. **装饰器**:这是一种特殊类型的函数,用于修改其他函数的功能,增强了代码的灵活性和可复用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值