Python面试口嗨篇(一)

问题1:

Python 中类方法、类实例方法、静态方法有何区别?

回答:

  • 类方法:是类对象的方法,在定义时需要在上方使用@classmethod进行装饰,形参为 cls, 表示类对象,类对象和实例对象都可调用;

  • 类实例方法:是类实例化对象的方法,只有实例对象可以调用,形参为 self,指代对象本身;

  • 静态方法:是一个任意函数,在其上方使用@staticmethod进行装饰,可以用对象直接调用, 静态方法实际上跟该类没有太大关系。

问题2:

Python 函数调用的时候参数的传递方式是值传递还是引用传递?

回答:

Python 的参数传递有:位置参数、默认参数、可变参数、关键字参数。

函数的传值到底是值传递还是引用传递,要分情况:

  • 不可变参数用值传递:
    • 像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象
  • 可变参数是引用传递的:
    • 比如像列表,字典这样的对象是通过引用传递、和 C 语言里面的用指针传递数组很相似,可变对象能在函数内部改变。

问题3:

对缺省参数的理解 ?

回答:

  • 缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时, 所传入的参数会替代默认参数。

  • *args 是不定长参数,他可以表示输入参数是不确定的,可以是任意多个。

  • **kwargs是关键字参数,赋值的时候是以键 = 值的方式,参数是可以任意多对在定义函数的时候 不确定会有多少参数会传入时,就可以使用两个参数。

问题4:

递归函数停止的条件?

回答:

​ 递归的终止条件一般定义在递归函数内部,在递归调用前要做一个条件判断,根据判断的结果选择 是继续调用自身,还是 return;返回终止递归。

终止的条件:

  • 判断递归的次数是否达到某一限定值

  • 判断运算的结果是否达到某个范围等,根据设计的目的来选择

问题5:

单例模式的应用场景有哪些?

回答:

单例模式应用的场景一般发现在以下条件下:

(1) 资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置。

(2) 控制资源的情况下,方便资源之间的互相通信。如线程池等。

  • 网站的计数器

  • 应用配置

  • 多线程池

  • 数据库配置

  • 数据库连接池

  • 应用程序的日志应用

发布了6 篇原创文章 · 获赞 10 · 访问量 1012

猜你喜欢

转载自blog.csdn.net/qq_40588512/article/details/104302018