积善科技(快代理)Python实习生面试总结
第一面是电话面。简单问了几个问题
- 1.生成八位字符串的随机验证码 ?
- 我当时想的是:将字符串存放在字典中,然后用随机函数生成数字,最后通过数字索引来取到对应的字符生成字符串
- 2.Python中的None和NULL类型
- None表示的是空对象,null表示的是空字符串
- 数据库的问题
- 条件查询,连表查询等(很久没有用mysql数据库,基本上忘得干干净净,看来以后关系型数据库不能丢啊!!!)
第二面是做了一套笔试题
- 记录下几个我在意的问题
列表推导式和字典推导式,以及匿名函数
原文转自:https://blog.51cto.com/6226001001/2059536
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导式,在Python2和3中都有支持:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
1. 列表推导式
1.1 使用[]生成list
基本格式:
|
|
- out_exp_res:列表生成元素表达式,可以是有返回值的函数。
- for out_exp in input_list:迭代input_list将out_exp传入out_exp_res表达式中。
- if out_exp == 2:根据条件过滤哪些值可以。
实例:
- 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
|
|
- 生成间隔5分钟的时间列表序列
|
|
- 求(x, y),其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
|
|
- 求M中3, 6, 9组成的列表
|
|
- 求M中斜线1, 5, 9组成的列表
|
|
- 求M, N中矩阵和元素的乘积
|
|
- 把字典中age键,按照条件赋新值
|
|
- 列表推导式
|
|
1.2 使用()生成generator
将上述两表推导式的[]改成(),即可得到生成器。
|
|
2. 字典推导式
字典推导和列表推导的使用类似,只不过中括号改成大括号。
基本格式:{ key_expr: value_expr for value in collection if condition }
举例说明:
- 用字符串和其长度创建字典
|
|
- 大小写key合并
|
|
- 快速更换key和value
|
|
3. 集合推导式
集合推导式跟列表推导式也是类似的。 唯一的区别在于它使用大括号{ }。
基本格式:{ expr for value in collection if condition }
举例说明:
- 集合推导式
|
|
- 用集合推导式,创建字符串长度的集合
|
|
- 一个由男人列表和女人列表组成的嵌套列表,取出姓名中带有两个以上含字母e的姓名,组成列表
|
|
匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
在Python中,对匿名函数提供了有限支持。还是以map()
函数为例,计算f(x)=x2时,除了定义一个f(x)
的函数外,还可以直接传入匿名函数:
|
|
通过对比可以看出,匿名函数lambda x: x * x
实际上就是:
|
|
关键字lambda
表示匿名函数,冒号前面的x
表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return
,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
|
|
同样,也可以把匿名函数作为返回值返回,比如:
|
|
.py
与.pyc
文件区别
- 我们把源代码放在
.py
文件中,在执行.py
文件时,Python
会把.py
源文件编译成中间文件.pyc
形式(byte-compiled),这样做是为了加快下次执行文件的速度。 - 在运行python源文件时,我们应该首先查看是否具有
.pyc
文件。如果有的话,且.py
文件的修改时间和.pyc
的修改时间一样,就会读取.pyc
文件;否则,Python
解释器就会读取原来的.py
文件。 - 其实,并不是运行所有
.py
文件都会产生.pyc
文件,只有在import相关.py
文件时,才会生成相应.pyc
文件。
最后:
- 这次面试给了我很大的思考,基本上都是基础题目,不是很难,但是由于平时依赖代码提示器和Google去解决问题,导致自己很多东西知道怎么做,但是不查资料就无法写出来,或者是有Bug。python的学习应该更加深入,希望自己下次能做的更好。