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(函数常考题和异常处理)的更多相关文章
- Python面试知识点小结
一.Python基础 1.Python语言特性: 动态型(运行期确定类型,静态型是编译型确定类型),强类型(不发生隐式转换,弱类型,如PHP,JavaScript就会发生隐患式转换) 2.Python ...
- python面试总结3(性能分析优化,GIl常考题)
python性能分析和优化,GIL常考题 什么是Cpython GIL Cpython解释器的内存管理并不是线程安全的 保护多线程情况下对python对象访问 Cpython使用简单的锁机制避免多个线 ...
- 10个Python面试常问的问题
概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的 ...
- Python面试常考点之深入浅出链表操作
Python面试常考点之深入浅出链表操作 在Python开发的面试中,我们经常会遇到关于链表操作的问题.链表作为一个非常经典的无序列表结构,也是一个开发工程师必须掌握的数据结构之一.在本文中,我将针对 ...
- Python面试常问的10个问题
很多人想找Python工作,面试往往在基础知识点采坑了 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试 ...
- python面试大全
问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...
- Python面试必须要看的15个问题
本文由EarlGrey@编程派独家编译,转载请务必注明作者及出处. 原文:Sheena@codementor 译文:编程派 引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Pyt ...
- Python面试应急5分钟!
不论你是初入江湖,还是江湖老手,只要你想给自己一个定位那就少不了面试!面试的重要性相信大家都知道把,这就是我们常说的“第一印象”,给大家说一下我的面试心得把,面试前的紧张是要的,因为这能让你充分准 ...
- 常见的25个python面试问答
常见的25个python面试问答 说到好用简洁的大数据技术,除了Hadoop.R等等,Python也是其中熠熠生辉的一员,因而广受企业和商家的青睐.求职季,不少应聘者在面试相关职业时都被要求掌握Pyt ...
随机推荐
- [LeetCode] 121. Best Time to Buy and Sell Stock 买卖股票的最佳时间
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- Python虚拟环境Virtualen简单使用
安装pip 使用脚本安装和升级pip 要安装或升级pip,需要下载 get-pip.py. 地址:https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理 ...
- PHP阿里大于发短信教程
PHP阿里大于发短信教程 1 先去控制台 https://www.alidayu.com/center/user/account?spm=a3142.7791109.1999204004.5.ZtBQ ...
- 创建 django 项目命令
创建Django项目 django-admin startproject HelloWorld Django创建app cd HelloWorld python manage.py startapp ...
- 06 Mybatis 使用xml配置映射模式+动态SQL---使用案例
1.项目结构 2.数据库表User对应的实体类 package domain; import java.io.Serializable; import java.util.Date; /** * 数据 ...
- 如何使用websocket实现前后端通信
websocket通信是很好玩的,也很有用的的通信方式,使用方式如下: 第一步由于springboot很好地集成了websocket,所以先在在pom.xml文件中引入依赖 <dependenc ...
- Django框架深入了解_02(DRF之序列化、反序列化)
序列化:将Python对象准换成json格式的字符串,反之即为反序列化 DRF的序列化使用过程: 使用drf的序列化组件 -1 新建一个序列化类继承Serializer -2 在类中写要序列化的字段 ...
- 用GDB调试程序(四)
查看栈信息————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的.当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中.你可以用GDB命令 ...
- Microsoft的考验――查找第二大的数
#include<stdio.h> int main() { int n,m,t,max,max1; scanf("%d",&n); while(n--) { ...
- pyenv基本使用
pyenv使用 1.安装: git clone https://github.com/pyenv/pyenv.git 2.配置pyenv环境变量 echo 'export PYENV_ROOT=&qu ...