Python高频面试题及其答案
程序员文章站
2022-05-06 16:50:18
...
命名空间和作用域的关系:
命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,
命名空间是键值对的集合,变量名与值是一一对应关系。
作用域定义了命名空间中的变量能够在多大范围内起作用。
装饰器函数的作用?写一个装饰器程序:
在不修改原函数及其调用方式的情况下对原函数功能进行扩展
def outer(f):
def inner():
print("**")
f()
print("*")
return inner
@outer**
def func():**
print("华晨宇演唱会")**
func()*
****
闭包的形成要件是什么,写一个闭包函数:
闭包函数必须有内嵌函数、
内嵌函数必须要引用外层函数的变量、
闭包函数返回内嵌函数的地址(函数名称)
def func():
name="ruirui"
def inner():
print(name)
return inner
f=func()
f()
***
简述try、except语句的用法:
程序先执行try中的代码,如果try中代码没有出错,则不会执行except中的异常代码。
如果try中的代码出错了,则执行exception中的异常代码。
简述read, readline, readlines的区别:
read会一次性读取文件的全部内容
readline 每次读取一行,并且自带换行功,每一行末尾会读到\n
Readlines 一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来
简述深拷贝和浅拷贝:
浅拷贝:对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。
深拷贝:拷贝对象的具体内容,二内存地址是自主分配的,
拷贝结束之后俩个对象虽然存的值是一样的,但是内存地址不一样,俩个对象页互相不影响,互不干涉
简述python中类方法和静态方法:
类方法是类对象的方法,在定义时需要在上方使用“@classmethod”进行装饰,
形参为 cls,表示类对象,类对象和实例对象都可调用。
静态方法是一个任意函数,在其上方使用“@staticmethod”进行装饰,可以用对象直接调用,
静态方法实际上跟该类没有太大关系。
请简述你对面向对象的理解:
在编写代码时只写框架思路,具体实现还未编写就可以用 pass 进行占位,使程序不报错,
不会进面向对象的编程,简称:OOP,是一种编程的思想。
OOP把对象当成一个程序的基本单元,一个对象包含了数据和操作数据的函数。
面向对象的出现极大的提高了编程的效率,使其编程的重用性增高。
python面向对象的重要术语:
1.多态(polymorphism):一个函数有多种表现形式,调用一个方法有多种形式,但是表现出的方法是不一样的。
2.继承(inheritance)子项继承父项的某些功能,在程序中表现某种联系
3.封装(encapsulation)把需要重用的函数或者功能封装,方便其他程序直接调用
4.类:对具有相同数据或者方法的一组对象的集合
5.对象:对象是一个类的具体事例
简述实例属性与类属性的区别以及实例方法与类方法,静态方法的区别:
类属性和实例属性的区别:在Python中一切皆对象,类是一个特殊的对象即类对象,
描述类的属性称为类属性,它属于类。类属性在内存中只有一份,所有实例对象公用,在init外部定义。
实例属性:用来描述类创建出来的实例对象,需要通过对象来访问,
在各自对象的内存中都保存一份,在init方法内部定义
实例方法、类方法、静态方法的区别:
这三种方法都是保存在类的内存中,调用者不同。实例方法由对象调用,
至少一个self参数,self代表对象的引用。类方法由类调用,至少一个cls参数,
并且需要装饰器@classmethod修饰静态方法由类调用,不需要参数,
需要装饰器@staticmethod修饰
给定两个 list A ,B,请用找出 A ,B 中相同的元素,A ,B 中不同的元素:
A、B 中相同元素:print(set(A)&set(B))
A、B 中不同元素:print(set(A)^set(B))