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 ...
 
随机推荐
- 如何将整数转换为timespan
			
可以使用From方法,这些方法可将Days / Days / minutes / seconds / milliseconds / ticks转换为TimeSpam格式,如下所示: TimeSpan ...
 - 001-mac搭建Python开发环境、Anaconda、zsh兼容
			
一.概述 mac下搭建python环境推荐使用Anaconda+Pycharm. 1.1.Anaconda Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学.机器 ...
 - Shell流程控制语句while
			
while语法格式: while 判断条件 do 命令 done while语句流程控制图: 实例: [root@youxi1 ~]# vim a.sh #!/bin/bash i=0 while [ ...
 - 浏览器低延时播放监控摄像头RTSP海康大华硬盘录像机NVR视频(EasyNVR播放FLV视频流)
			
背景描述 EasyNVR的使用者应该都是清楚的知道,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理后可 ...
 - Pytest单元测试框架-Pytest环境安装
			
unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...
 - [LeetCode] 280. Wiggle Sort 摆动排序
			
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...
 - 1206 雅礼集训D2题解
			
A \(two\) \(1.1\) \(Description\) 你有两棵有根树,每棵各有 n 个顶点.让我们用整数 1 到 n 给每棵树的顶点编 号.两棵树的根都是顶点 1.第一棵树的边都都是蓝色 ...
 - TP5 模型CURD
			
ThinkPHP5的模型是一种对象-关系映射(Object / Relation Mapping ,简称 ORM)的封装,并且提供了简洁的ActiveRecord实现.一般来说,每个数据表会和一个“模 ...
 - [转帖]keepalived实现服务高可用
			
keepalived实现服务高可用 https://www.cnblogs.com/clsn/p/8052649.html 第1章 keepalived服务说明 1.1 keepalived是什么? ...
 - 栈习题(1)-对于任意的无符号的的十进制数m,写出将其转换为十六进制整数的算法(正确输出即可)
			
/*对于任意的无符号的的十进制数m,写出将其转换为十六进制整数的算法(正确输出即可)*/ /* 算法思想:利用辗转取余法,每次都将余数存入栈中,直到被除数等0,退出循环. 输出栈里的内容即可 */ v ...