python助教的面试题_六个Python经典面试题(附详解)
1. 列表(list)和元组(tuple)有什么区别?
在我每一次应聘Python数据科学家的面试中,这个问题都会被问到。所以对这个问题的答案,我可以说是了如指掌。列表是可变的。创建后可以对其进行修改。元组是不可变的。元组一旦创建,就不能对其进行更改。
列表表示的是顺序。它们是有序序列,通常是同一类型的对象。比如说按创建日期排序的所有用户名,如["Seth",
"Ema", "Eli"]。
元组表示的是结构。可以用来存储不同数据类型的元素。比如内存中的数据库记录,如(2, "Ema",
"2020–04–16")(#id, 名称,创建日期)。
2. 如何进行字符串插值?
在不导入Template类的情况下,有3种方法进行字符串插值。
name = 'Chris'
# 1. f stringsprint(f'Hello {name}')
# 2. % operatorprint('Hey %s %s' % (name,
ame))
# 3. format
print(
"My name is {}".format((name)))
3. “is”和“==”有什么区别?
在我的Python职业生涯的早期,我认为它们是相同的,因而制造了一些bug。所以请大家听好了,“is”用来检查对象的标识(id),而“==”用来检查两个对象是否相等。我们将通过一个例子说明。创建一些列表并将其分配给不同的名字。请注意,下面的b指向与a相同的对象。
a = [1,2,3]
b = a
c = [1,2,3]
下面来检查是否相等,你会注意到结果显示它们都是相等的。
print(a == b)
print(a == c)
#=> True
#=> True
但是它们具有相同的标识(id)吗?答案是不。
print(a is b)
print(a is c)
#=> True
#=> False
我们可以通过打印他们的对象标识(id)来验证这一点。
print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
你可以看到:c和a和b具有不同的标识(id)。
4. 什么是装饰器(decorator)?
这是每次面试我都会被问到的另一个问题。它本身就值得写一篇文章。如果你能自己用它编写一个例子,那么说明你已经做好了准备。
装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能和添加的额外功能。
我们将编写一个装饰器,该装饰器会在调用另一个函数时记录日志。
编写装饰器函数logging。它接受一个函数func作为参数。它还定义了一个名为log_function_called的函数,它先执行打印出一些“函数func被调用”的信息(print(f'{func} called.')),然后调用函数func()。最后返回定义的函数。
def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
让我们编写其他两个函数,我们最终会将装饰器添加到其中(但还没有)。
def my_name():
print('chris')def friends_name():
print('naruto')my_name()
friends_name()
#=> chris
#=> naruto
现在将装饰器添加到上面编写的两个函数之中。
@logging
def my_name():
print('chris')@logging
def friends_name():
print('naruto')my_name()
friends_name()
#=>
called.
#=> chris
#=>
called.
#=> naruto
现在,你了解了如何仅仅通过在其上面添加@logging(装饰器),就能够轻松地将日志添加到我们编写的任何函数中。
5. 解释Range函数
Range函数可以用来创建一个整数列表,一般用在for循环中。它有3种使用方法。
Range函数可以接受1到3个参数,参数必须是整数。
请注意:我已经将range的每种用法包装在一个递推式构造列表(list comprehension)中,以便我们可以看到生成的值。
用法1 - range(stop):生成从0到参数“stop”之间的整数。
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
用法2 - range(start, stop) : 生成从参数“start”到“stop”之间的整数
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
用法3 - range(start, stop, step):以参数“step”为步长,生成从“start”到“stop”之间的整数。
[i for i in range(2,10,2)]
#=> [2, 4, 6, 8]
6.
定义一个名为car的类,它有两个属性:“color”和“speed”。然后创建一个实例并返回“speed”。
class Car :
def __init__(self, color, speed):
self.color = color
self.speed = speedcar = Car('red','100mph')
car.speed
#=> '100mph'
python助教的面试题_六个Python经典面试题(附详解)相关推荐
- 如何使用python脚本下载git代码_通过pycharm使用git的步骤(图文详解)
前言 使用git+pycharm有一段时间了,算是稍有点心得,这边整理一下,可能有的方法不是最优,欢迎交流,可能还是习惯敲命令去使用git,不过其实pycharm已经帮忙做了很多了,我们可以不用记住那 ...
- python中的pandas库_数据分析中 pandas 库的基本用法详解
上篇分享了数据分析用到的一个库:Numpy 库,今天分享一个比 Numpy 更高效的库:pandas,它可以对数据进行导入.清洗.处理.统计和输出.pandas 是基于 Numpy 库的,可以说,pa ...
- Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist参数详解
https://www.cnblogs.com/zyg123/p/10504645.html
- python选择排序算法图解_简单选择排序算法(C语言详解版)
该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...
- Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)
<Unity面试题> 版本 作者 参与者 完成日期 备注 Unity_JobView_V01_1.0 严立钻 2018.07.26 ##<Unity面试题>发布说明: ++++ ...
- [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- [Python图像识别] 五十.Keras构建AlexNet和CNN实现自定义数据集分类详解
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- C++框架_之Qt的信号和槽的详解
目录 C++_之Qt的信号和槽的详解 1.概述 1.1对象树(子对象动态分配空间不需要释放) 2.信号和槽 Qt5 的书写方式:(推荐的使用)★★★★★ Qt4 的书写方式: 3.自定义信号槽 3.1 ...
最新文章
- c语言 得到结构体成员偏移
- java多线程详细讲解_Java多线程例子讲解
- [渝粤教育] 广东-国家-开放大学 21秋期末考试中国近现代史纲要(A)10881k1
- 机场精细化管理_宇视科技智慧机坪解决方案助力机场实现精细化管理
- Linux升级glibc版本汉字乱码,Linux CentOS6升级glibc库过程
- 面试:一文搞懂Java集合
- js控制时间显示格式
- 用turtle画中国象棋棋盘
- 原理 rpm_图文详解,微型直流电机的工作原理
- ffmpeg推流 av_dict_set 参数设置解析(降低延时、处理花屏、改善画面质量)(实时更新)
- 研发感悟:从CPU架构图谈谈开发工作
- Hadoop整理四(Hadoop分布式计算框架MapReduce)
- python编程的区别_Python与其它编程语言的区别
- wxparse使用(富文本插件)
- Arcgis拓扑检查
- 工业相机像元与像素之间的关系
- 为什么存储服务器硬盘格式化不,硬盘为什么不能格式化
- 子层div浮动导致父层无法自适应高度的解决方法
- cz.cc免费域名申请教程(因为有朋友不知道怎么操作,特写此简单教程)
- cityengine导入并创建路网