python面试总结2(函数常考题和异常处理)

Posted only-me

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python面试总结2(函数常考题和异常处理)相关的知识,希望对你有一定的参考价值。

python函数常考题
  • 可变类型为参数

  • 不能类型为参数

python如何传递参数
  • 传递值还是引用呢?都不是。唯一支持的参数传递是共享穿参
  • Call by Object(Call by Object Reference or Call by Sharing)
  • Call by sharing(共享传参)。函数形参获得实参中各个引用的副本
def flist(l):
  l.append(0)
  print(l)
  
l = []   #指向同一个内存地址
flist(l)  # [0]
flist(l)  # [0,0]
#list作为可变类型传递,可变类型在同一对象上修改

def fstr(s):
  s += 'a'
  print(s)
  
s = 'hehe'  #不可变类型传递,每次赋值在一个新对象上操作,传递的形参指向新的对象
fstr(s)  # 'hehea'
fstr(s)  # 'hehea'
python可变/不可变对象

搞懂可变和不可变内置对象有利于理解函数参数的副作用

  • 哪些是可变对象?哪些不可变?
  • 不可变对象 bool/int/float/tuple/str/frozenset
  • 可变对象 list/set/dict
python可变参数作为默认参数
# 默认参数只计算一次

def flist(l=[1]):
        l.append(1)
    print(l)
    
flist()         # [1,1]
flist()         #[1,1,1]
python*args,**kwargs

函数传递中 *args, **kwargs含义是什么

  • 用来处理可变参数
  • *args 被打包成tuple
  • **kwargs被打包成为dict
什么是python异常
  • BaseException
  • SystemExit/KeyboardInterrupt/GeneratorExit
  • Exception
使用异常的常见场景

什么时候需要捕获处理异常呢?看python内置异常的类型

  • 网络请求(超时,连接错误)
  • 资源访问(权限,资源不存在)
  • 代码逻辑(越界访问,keyError)
try:
   # func                   #可能会抛出异常的代码
except  (Exception1, Exception2) as e:  #可以捕获多个异常并处理
     # 异常处理的代码
else:
  # pass                # 异常没有发生的时候代码逻辑
finally:
   pass                 # 无论异常有没有发生都会执行代码,一般处理资源的关闭和释放
如何自定义异常
  • 继承Exception实现自定义异常
  • 给异常加上一些附加信息
  • 处理一些业务相关的特定异常(raise MyException)
class MyException(Exception);
        pass
try:
  raise MyException('my exception')
except Exception as e:
  print(e)

以上是关于python面试总结2(函数常考题和异常处理)的主要内容,如果未能解决你的问题,请参考以下文章

「二分查找」面试最常考题

链表面试-删除链表中重复的节点(常考题)

7-2 HTTP 面试常考题

7-2 HTTP 面试常考题

面试成长总结帖

C++入门—namespace的使用傻傻分不清楚&C++中函数的参数也可以配备胎&面试常考题