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)

原文地址:https://www.cnblogs.com/only-me/p/11358375.html

时间: 2024-11-10 17:30:05

python面试总结2(函数常考题和异常处理)的相关文章

10个Python面试常问的问题

概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的一段代码: class A(object): def show(self): print 'base show' class B(A): def show(self): print 'derived show' obj = B() obj.show() 如何调用类A的show方法了. 方法如下: o

Python面试常考点之深入浅出链表操作

Python面试常考点之深入浅出链表操作 在Python开发的面试中,我们经常会遇到关于链表操作的问题.链表作为一个非常经典的无序列表结构,也是一个开发工程师必须掌握的数据结构之一.在本文中,我将针对链表本身的数据结构特点,以及链表的一些常见操作给大家做一个深入浅出的讲解,希望本文的读者能够掌握链表的操作. 1. 什么是链表? 简单地说,链表是一种无序的列表.你可以把链表里面的数据看成是随机排列的,元素之间并没有固定的先后顺序.所以,既然是无序的,那么我们就无法像操作list对象一样简单地用in

Python面试必须要看的15个问题

引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Python.下面这些问题涉及了与Python相关的许多技能,问题的关注点主要是语言本身,不是某个特定的包或模块.每一个问题都可以扩充为一个教程,如果可能的话.某些问题甚至会涉及多个领域. 我之前还没有出过和这些题目一样难的面试题,如果你能轻松地回答出来的话,赶紧去找份工作吧! 问题1 到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 答案 下面是一些关键点: Python是一种解释型语言.这就是说,

python面试题目

问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print Parent.x, Child1.x, Child2.x Child1.x = 2 print Parent.x, Child1.x, Child2.x Parent.x = 3 print Parent.x, Child1.x, Child2.x 答案是 1 1

python中常用的函数与库一

1, collections.deque 在python里如果我们用列表作为队列使用也是可以的,只是当从队尾删除或者增加元素的时候是很快的,但是从队首删除或者增加元素则要慢得多,这是因为在队首进行操作其他的元素都要逐一改变. collections.deque就是为队列设计的,它能迅速得删除或者增加元素,无论是队首还是队尾 >>> from collections import deque >>> queue = deque(["Eric", &qu

Python 常用内置函数

abs 取绝对值 print(abs(-1)) #结果1 all(...) all(iterable) -> bool Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True. 如果iterable的所有元素不为0.''.False或者iterable为空,all(iterable)返回True,否则返回False:函数等价于: 1 def all

8个Python面试必考的题目,小编也被坑过 ToT

写在前面 小编学习Python已经三年多了,现在稳定在一家公司快一年了,回想起来一年以前的面试经历真的有点胆战心惊啊! 因为面试题目一不小心就会被坑啊~ 你经历过绝望么? 当你被Python面试题目坑到的时候内心真的一万个草泥马徘徊在心中啊o(╥﹏╥)o 下面小编就分享一些小编亲身经历过的一些Python神坑面试题哦~ 干货来了 1.下面这段代码的输出结果是什么?请解释. def extendList(val, list=[]): list.append(val) return list lis

Python面试简介及并行并发

今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. 内存管理和垃圾回收 5. 面试示例 三.并发并行 1. 进程 2. 线程 3. 协程 4. 并发编程 一. 面试 什么是面试 面:当面/面谈/面聊, 试:考试,当前社会上各大企业和公司招人环节中最重要的一道流程关卡:目前面试已经衍生了多种操作形式:直面.电面.视频面.在线coding: 一轮面试的

Python面试综合--DB相关

Python面试综合--DB相关 关系型数据库:MySQL,Oracle,Postgrel, MariaDB, SQL Server等 优点 易用性:都是使用表结构,格式一致,支持sql语言 支持复杂查询:多表连表查询 缺点 读写性能较差,海量数据时瓶颈出现 灵活度不高 高并发情况下硬盘IO出现瓶颈 非关系型数据库(Not Only SQL):Redis,Memcached, MongoDB, Hbase等 优点 格式灵活 扩展性高 速度快 成本低 MySQL 存储引擎 详见: MyISAM I