Python面试题函数

第二章 函数

  1. 通过代码实现如下转换:

               二进制转换成十进制:v = “0b1111011”
十进制转换成二进制:v = 18
八进制转换成十进制:v = “011”
十进制转换成八进制:v = 30
十六进制转换成十进制:v = “0x12”
十进制转换成十六进制:v = 87

答:

  1. Python递归的最大层数?
答:官方表明,递归的最大层数是1000,

我们本地测试是998或997

  1. 列举常见的内置函数?

答:

  1. filter、map、reduce的作用?
答: filter 的作用是过滤条件

map    的作用是将内容里的元素逐个做处理

reduce 是用于做累计算

 

  1. 什么是闭包?
答:1.一个嵌套函数

2.内部函数使用外部非全局的变量

 

  1. 简述 生成器、迭代器、装饰器以及应用场景?
答:生成器(迭代器)应用场景:

读取(获取)较大的文件和内容的时候使用,防止内存溢出

 

装饰器应用场景:

自定义用户认证的时候

flask框架路由系统

Django认证

 

  1. 使用生成器编写fib函数, 函数声明为fib(max), 输入一个参数max值, 使得该函数可以这样调用。

               并产生如下结果(斐波那契数列),1,1,2,3,5,8,13,21...

答:

  1. 一行代码, 通过filter和lambda函数输出以下列表索引为基数对应的元素。

               list_a=[12,213,22,2,2,2,22,2,2,32]

答:

  1. 写一个base62encode函数, 62进制。

               即:0123456789AB..Zab..z(10个数字+26个大写字母+26个小写字母)。
   base62encode(1)=1
   base62encode(61) = z
   base62encode(62)=10

答:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 请实现一个装饰器, 限制该函数被调用的频率, 如10秒一次

答:

 

 

 

 

 

 

 

 

  1. 请实现一个装饰器, 通过一次调用使函数重复执行5次。

答:

  1. python一行print出1~100偶数的列表, (列表推导式, filter均可)

答:

 

 

 

 

 

 

 

 

 

  1. 解释生成器与函数的不同, 并实现和简单使用generator.

答:

  1. 列表推导式和生成器表达式 [i % 2 for i in range(10)] 和 (i % 2 for i in range(10)) 输出结果分别是什么?

答:

  1. map(str,[1,2,3,4,5,6,7,8,9]) 输出是什么?

答:

  1. python中定义函数时如何书写可变参数和关键字参数?

答:

  1. Python3.5中enumerate的意思是什么?

答:

  1. 说说Python中的装饰器,迭代器的用法:描述下dict的item方法与iteritems方法的不同
答:  装饰器是在不修改原函数的基础上添加一个功能
迭代器是读取大文件时使用的
python3中没有iteritems
items和iteritems大致相同,只是items返回的是一个列表,iteritems返回的是一个迭代器。

 

 

  1. 是否使用过functools中的函数?其作用是什么?
答:reduce
作用是进行累计算
wraps
作用是消除装饰带来的副作用(我们在调用被装饰的函数其实已经不是它本身,我们使用wraps就能消除这个问题)

 

  1. 如何判断一个值是函数还是方法?
  2. 请编写一个函数实现将IP地址转换成一个整数。

               如 10.3.9.12 转换规则为:
        10            00001010
         3            00000011
         9            00001001
        12            00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

答:

  1. lambda表达式格式以及应用场景?

答:

 

  1. pass的作用?
  2. *arg和**kwarg作用?
答:当你在编写一个程序时,执行语句部分思路还没有完成,这时你可以用pass语句来占位,也可以当做是一个标记,是要过后来完成的代码。
 
程序当中 ... 功能和pass功能一
答:*args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元组的方式呈现)
  **kwargs:(表示的就是实参中按照关键字传值把多余的传值以字典的方式呈现)

 

  1. 如何在函数中设置一个全局变量 ?

答:

  1. 请写出打印结果:

 

 

  1. 求结果: lambda

 

答:[6,6,6,6]

  1. 简述 yield和yield from关键字。
答:yield是将内容一次性返回
yield from 是将可迭代对象中的元素逐个返回

 

  1. 有processFunc变量 ,初始化为processFunc = collapse and (lambda s:" ".join(s.split())) or (lambda s:s)

               调用上下文如下

              

               以上代码会在控制台输出什么?

答:

  1. 请给出下面代码的输出结果

 

答:1,[1]

  1. 全局变量和局部变量的区别, 如何给function里面的一个全局变量赋值

答:

  1. 什么是lambda函数, 下面这段代码的输出是什么

 

答:

  1. 指出下面程序存在的问题

 

答:

 

 

 

 

 

  1. 有一个数组[3,4,1,2,5,6,6,5,4,3,3] 请写一个函数, 找出该数组中没有重复的数的总和. (上面数据的么有重复的总和为1+2=3)

答:

  1. 求打印结果
  2.       A.  error
    B.  [5]
    C.  [1,2,3]
    D.  [1,2,3,5]

答:D

  1. 请写一个函数, 计算出如下几个字母代表的数字

               AB-CD=EF
EF+GH = PPP

答:

  1. 请给出下面代码片段的输出

 

答:# 结果:
HI
Yo
ROCK&ROLL
BYE

 

  1. 请简述标准库中functools.wraps的作用

答:Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用。写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring

 

 

 

 

 

  1. 请给出下面代码片段的输出

 

答:# 结果
Error occurred
Don

 

  1. 下面的函数,那些会输出1,2,3三个数字

     

答:

  1. 以下函数需要在其中引用一个全局变量k, 请填写语句

 

答:global k

  1. 请把以下函数转化为python lambda匿名函数

 

答: lambda x,y:x+y

 

  1. 阅读以下代码, 并写出程序的输出结果

 

答:{'a': 0, 'b': 1, 'c': 2}

 

 

 

 

 

 

 

 

  1. 填空题

 

答:4,
8,
Error
10,
24,
Error

 

  1. def(a, b=[])这种写法有什么陷阱?

答:这种陷阱就是默认参数b=[],在调用这个函数没有传新的参数进来,用的都是b这个列表.

 

  1. 函数

 

答:

  1. 函数参数 *args,**kwargs的作用是什么

     

答:*args动态接收位置参数
** kwargs动态接收关键字参数

 

  1. 可变参数定义 *args,**kwargs的区别是什么?并且写出下边代码的输入内容

 

答:args= (1, 2, 3, 4)

kwargs= {}

---------------

args= ()

kwargs= {'a': 1, 'b': 2, 'c': 3}

---------------

args= (1, 2, 3, 4)

kwargs= {'a': 1, 'b': 2, 'c': 3}

---------------

args= ('a', 1, None)

kwargs= {'a': 1, 'b': '2', 'c': 3}

---------------

  1. 请写出log实现(主要功能时打印函数名)

 

答:

  1. Python如何定义一个函数
  2.                A.  class <name>(<Type> arg1, <type> arg2, ...)
    B.  function <name>(arg1,arg2,...)
    C.  def <name>(arg1, arg2,...)
    D.  def <name>(<type> arg1, <type> arg2...)

答:C

 

 

  1. 选择代码运行结果
  2.                A.  0
    B.  1
    C.  2
    D.  3
    E.  4

答:C

  1. 选择输出结果
  2.                A.  str
    B.  int
    C.  tuple
    D.  list
    E.  dict

答:C

  1. 下面程序的输出结果是

 

答:24

  1. 什么是lambda表达式?

答:匿名函数,一行代码的函数

  1. 以下代码输出是什么,请给出答案并解释

               请修改multipliers的定义来产生期望的结果

答:

  1. 有 0 < x <= 10, 10 < x <= 20, 20 < x <= 30, .,190 < x〈= 200,200 < x这样的21个区间分别对应1-21二十一个级别,请编写一个函数 level (x)根据输入数值返回对应级别。

答:

  1. 写函数

               有一个数据结构如下所示,请编写一个函数从该结构数据中返画由指定的 字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。

 

答:

  1. 补全代码

若要将N个task分配给N个worker同时去完成, 每个worker分别都可以承担这N个task,但费用不同. 下面的程序用回溯法计算总费用最小的一种工作分配方案, 在该方案中, 为每个worker分配1个task.程序中,N个task从0开始顺序编号, N个worker也从0开始顺序编号, 主要的变量说明如下:
- ci:将任务i分配给worker j的费用
- task[i]: 值为0表示task i未分配, 值为j表示task,i分配给worker j
- worker[k] 值为0表示未分配task, 值为1表示worker k已分配task;
- mincost: 最小总费用

程序

  写个函数接收一个文件夹名称作为参数, 显示文件夹中文件的路径, 以及其中包含文件夹中文件的路径。

posted @ 2019-11-20 20:06  june_ruby  阅读(41)  评论(0编辑  收藏  举报