python小程序篇四

一、python生成器yield和send的区别
yield语句是将数据产生出来并返回给调用者,send方法是将数据发送给生成器中的yield语句并重新激活生成器的执行。使用yield语句只能将数据产生出来,使用send方法可以将数据发送给生成器并重新激活生成器的执行

二、什么是GIL
GIL:又称全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码,在多线程环境下,GIL会对多线程的执行产生一定的影响。
在IO操作中,线程会释放GIL锁,让其他线程有机会执行Python代码。

三、python装饰器
在不改变原有函数代码的情况下,为函数添加新的功能或修改函数的行为。装饰器可以理解为是一个用来修饰函数的函数,它接收一个函数作为参数,并返回一个新的函数。
常见的装饰器包括函数计时、缓存、日志记录、权限控制等。

四、__new__和__init__的区别
new 方法创建实例对象的,是一个静态方法,第一个参数是 cls,在对象创建之前被调用,它负责创建并返回对象给init
init方法是初始化对象的,是一个实例方法,第一个参数是self

五、python的回收机制
垃圾回收(Garbage Collection,简称 GC)是自动进行的,它的主要目的是回收不再使用的内存,以便更好地利用系统资源。
主要基于引用计数(Reference Counting)和标记清除(Mark and Sweep)两种算法。
引用计数:当引用计数变为 0 时,说明该对象不再被使用
标记清除:它通过扫描对象间的引用关系来标记活动对象,并清除不再使用的对象。这种算法需要遍历整个对象图,对于大型的对象图,回收时间可能会比较长。

六、python的反向索引
使用负数索引来访问序列中的元素,其中-1表示序列的最后一个元素,-2表示倒数第二个元素,以此类推,切片操作

七、如何跨模块共享全局变量
(1)将需要共享的变量定义在一个单独的模块中,并在其他模块中引用该模块
(2)使用共享内存或者数据库等外部存储来实现全局变量的共享

八、python如何拷贝对象
标准库的copy模块提供了两个方法:copy和deepcopy方法。
copy.copy 浅拷贝 仅仅拷贝父对象,不会拷贝对象的内部的子对象。
copy.deepcopy 深拷贝 拷贝对象及其子对象。

九、什么是可迭代和迭代器
迭代(Iteration):指通过遍历来获取容器内的所有元素,特指遍历这个动作。例如通过 for 循环来遍历一个列表。
可迭代(Iterable):有iter( )方法或getitem( )方法,其中iter( )方法的作用是让对象可以用for … in循环遍历,getitem( )方法是让对象可以通过“实例名[index]”的方式访问实例中的元素。
迭代器:在Python中如果一个对象有iter( )方法和next( )方法,则称这个对象是迭代器(Iterator);其中iter( )方法是让对象可以用for … in循环遍历,next( )方法是让对象可以通过next(实例名)访问下一个元素。注意:这两个方法必须同时具备,才能称之为迭代器。列表List、元组Tuple、字典Dictionary、字符串String等数据类型虽然是可迭代的,但都不是迭代器,因为他们都没有next( )方法。

十、append和extend区别
相同点:
在列表list的末尾添加元素
以容器的方式添加
不同点:
append可以接受任何类型的参数,并且只是简单的把这个类型的参数加到后面。
extend则是只能接受一个参数,而这个参数应该只能是list

十一、python的迭代器和生成器
迭代器:Python中一个实现_iter_方法和_next_方法的类对象,就是迭代器;是一个能记住遍历位置的对象,遍历时只能往前,不能后退。迭代器常用方法有 iter() 和 next().
生成器:Python 中使用了 yield 的函数称为生成器,生成器函数返回一个迭代器。

生成器主要用于生成序列,而迭代器主要用于遍历序列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aurora Top

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值