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(函数常考题和异常处理)的更多相关文章

  1. Python面试知识点小结

    一.Python基础 1.Python语言特性: 动态型(运行期确定类型,静态型是编译型确定类型),强类型(不发生隐式转换,弱类型,如PHP,JavaScript就会发生隐患式转换) 2.Python ...

  2. python面试总结3(性能分析优化,GIl常考题)

    python性能分析和优化,GIL常考题 什么是Cpython GIL Cpython解释器的内存管理并不是线程安全的 保护多线程情况下对python对象访问 Cpython使用简单的锁机制避免多个线 ...

  3. 10个Python面试常问的问题

    概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的 ...

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

    Python面试常考点之深入浅出链表操作 在Python开发的面试中,我们经常会遇到关于链表操作的问题.链表作为一个非常经典的无序列表结构,也是一个开发工程师必须掌握的数据结构之一.在本文中,我将针对 ...

  5. Python面试常问的10个问题

    很多人想找Python工作,面试往往在基础知识点采坑了 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试 ...

  6. python面试大全

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

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

    本文由EarlGrey@编程派独家编译,转载请务必注明作者及出处. 原文:Sheena@codementor 译文:编程派 引言 想找一份Python开发工作吗?那你很可能得证明自己知道如何使用Pyt ...

  8. Python面试应急5分钟!

    ​ 不论你是初入江湖,还是江湖老手,只要你想给自己一个定位那就少不了面试!面试的重要性相信大家都知道把,这就是我们常说的“第一印象”,给大家说一下我的面试心得把,面试前的紧张是要的,因为这能让你充分准 ...

  9. 常见的25个python面试问答

    常见的25个python面试问答 说到好用简洁的大数据技术,除了Hadoop.R等等,Python也是其中熠熠生辉的一员,因而广受企业和商家的青睐.求职季,不少应聘者在面试相关职业时都被要求掌握Pyt ...

随机推荐

  1. Java12新特性 -- 只保留一个 AArch64 实现

    现状 当前 Java 11 及之前版本JDK中存在两个64位ARM端口.这些文件的主要来源位于src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录 ...

  2. oracle plsql 异常

      set serveroutput on DECLARE pename emp.ename%type; begin '; exception when no_data_found then dbms ...

  3. PP篇11 增、改生产订单组件BAPI

    增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...

  4. [LeetCode] 533. Lonely Pixel II 孤独的像素 II

    Given a picture consisting of black and white pixels, and a positive integer N, find the number of b ...

  5. [LeetCode] 723. Candy Crush 糖果粉碎

    This question is about implementing a basic elimination algorithm for Candy Crush. Given a 2D intege ...

  6. 21 javaweb开发--bug调试技巧

    1.当修改代码后,测试时没有任何效果 解决方案:换个浏览器试试,可能是浏览器缓存的原因.

  7. C语言之指针在printf语句里面的使用规范

    *** 一级指针的使用规则探索 *** #include<stdio.h> #include<stdlib.h> void main() { char *p; p = &quo ...

  8. 关于st表

    #include<cstdio> #include<iostream> #include<cmath> #include<cctype> #includ ...

  9. 记录一次mysql宕机的解决办法

    首先先粘贴出来我的错误信息,如下: 2019-07-16T00:53:18.285919Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysq ...

  10. git学习笔记 ---工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...