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经典面试题(附详解)相关推荐

  1. 如何使用python脚本下载git代码_通过pycharm使用git的步骤(图文详解)

    前言 使用git+pycharm有一段时间了,算是稍有点心得,这边整理一下,可能有的方法不是最优,欢迎交流,可能还是习惯敲命令去使用git,不过其实pycharm已经帮忙做了很多了,我们可以不用记住那 ...

  2. python中的pandas库_数据分析中 pandas 库的基本用法详解

    上篇分享了数据分析用到的一个库:Numpy 库,今天分享一个比 Numpy 更高效的库:pandas,它可以对数据进行导入.清洗.处理.统计和输出.pandas 是基于 Numpy 库的,可以说,pa ...

  3. Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist参数详解

    https://www.cnblogs.com/zyg123/p/10504645.html

  4. python选择排序算法图解_简单选择排序算法(C语言详解版)

    该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...

  5. Unity面试题ABC(Yanlz+A经典面试题+C#问题+Unity问题+...+F高薪就业+...+立钻哥哥+...)

    <Unity面试题> 版本 作者 参与者 完成日期 备注 Unity_JobView_V01_1.0 严立钻 2018.07.26 ##<Unity面试题>发布说明: ++++ ...

  6. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [Python图像识别] 五十.Keras构建AlexNet和CNN实现自定义数据集分类详解

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. C++框架_之Qt的信号和槽的详解

    目录 C++_之Qt的信号和槽的详解 1.概述 1.1对象树(子对象动态分配空间不需要释放) 2.信号和槽 Qt5 的书写方式:(推荐的使用)★★★★★ Qt4 的书写方式: 3.自定义信号槽 3.1 ...

最新文章

  1. c语言 得到结构体成员偏移
  2. java多线程详细讲解_Java多线程例子讲解
  3. [渝粤教育] 广东-国家-开放大学 21秋期末考试中国近现代史纲要(A)10881k1
  4. 机场精细化管理_宇视科技智慧机坪解决方案助力机场实现精细化管理
  5. Linux升级glibc版本汉字乱码,Linux CentOS6升级glibc库过程
  6. 面试:一文搞懂Java集合
  7. js控制时间显示格式
  8. 用turtle画中国象棋棋盘
  9. 原理 rpm_图文详解,微型直流电机的工作原理
  10. ffmpeg推流 av_dict_set 参数设置解析(降低延时、处理花屏、改善画面质量)(实时更新)
  11. 研发感悟:从CPU架构图谈谈开发工作
  12. Hadoop整理四(Hadoop分布式计算框架MapReduce)
  13. python编程的区别_Python与其它编程语言的区别
  14. wxparse使用(富文本插件)
  15. Arcgis拓扑检查
  16. 工业相机像元与像素之间的关系
  17. 为什么存储服务器硬盘格式化不,硬盘为什么不能格式化
  18. 子层div浮动导致父层无法自适应高度的解决方法
  19. cz.cc免费域名申请教程(因为有朋友不知道怎么操作,特写此简单教程)
  20. cityengine导入并创建路网

热门文章

  1. 福步怎么自定义头像_苹果手机怎么截屏 苹果手机截屏方法有几种?原来还可以这么操作...
  2. spring程序开发步骤
  3. camuda流程引擎如此简单「五」
  4. MySql分表、分库、分片和分区知识(转载)
  5. HDU 1427 速算24点
  6. CG CTF WEB 层层递进
  7. c语言设计期末考试试题及答案,C语言程序的设计期末考试试题(含答案).pdf
  8. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
  9. Objective-C 注释规范心得
  10. 计算1到N的十进制数中1的出现次数