《对线面试官》| 高频 Python 面试题 pt.1
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
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解释器的事件循环控制。
感谢阅读,如喜欢请支持作者。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)