扫码阅读
手机扫码阅读

《对线面试官》| 高频 Python 面试题 pt.1

158 2024-07-20

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:《对线面试官》| 高频 Python 面试题 pt.1
文章来源:
咸鱼运维杂谈
扫码关注公众号
文章摘要

Python 中的值传递和引用传递

在Python中,值传递是指函数调用时复制参数的值给形式参数,对形式参数的修改不影响原始变量的值。而引用传递指的是实际参数的引用(内存地址)被传递,形式参数的修改会影响原始变量的值。需要注意的是,Python 的参数传递实质上是引用传递,但不可变对象的表现类似于值传递,而可变对象则表现为引用传递。

Python 自省

Python 自省是指程序在运行时检查对象的类型、属性和方法等信息的能力。Python 通过type()dir()hasattr()getattr()setattr()isinstance()callable()函数实现自省。函数的.__code__属性和类的.__dict__属性也用于获取更多对象信息。

Python 中单下划线和双下划线的区别

单下划线(_)在变量或函数名前表示私有属性或用作占位符。而双下划线(__)在类中表示私有变量,不会被继承且不能在类外部访问,并且触发名称改写机制。双下划线开头和结尾的变量是Python的“魔术”对象,不建议用于一般变量或函数。

迭代器和生成器的区别

迭代器是通过实现__iter__()__next__()方法来访问集合元素的对象,当没有元素时引发StopIteration异常。Python的for循环自动处理迭代器。而生成器是特殊的迭代器,通过包含yield关键字的函数创建,能在函数执行中断和继续之间切换。

*args 和 **kwargs 区别

请参看作者的另一篇文章 "python 星号 * 还能这么用"

什么是 GIL

GIL(全局解释器锁)确保Python解释器在多线程环境中一次只执行一个线程,保证稳定性但限制了多核CPU的并发使用。对CPU密集型任务没有性能提升,而对I/O密集型任务能提高效率。

协程是什么

协程是一种轻量级的并发编程技术,允许在同一线程内的多个协程间切换实现非阻塞并发。不依赖操作系统线程或进程,由Python解释器的事件循环控制。

感谢阅读,如喜欢请支持作者。

想要了解更多内容?

查看原文:《对线面试官》| 高频 Python 面试题 pt.1
文章来源:
咸鱼运维杂谈
扫码关注公众号