当面试官问这些基础的Python问题时,竟然还有80%的人不会!

Posted 克金森沐沐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当面试官问这些基础的Python问题时,竟然还有80%的人不会!相关的知识,希望对你有一定的参考价值。

怎样才能开始一个交互式解释器的会话?

在Windows下可以通过点击开始按钮,选择“程序”,点击“Python”,然后选择“Python(command line)”菜单选项来开始一个交互会话。

你应该在哪里输入系统命令行来启动一个脚本文件?

在输入系统命令行的地方,也就是你所在的平台提供给作为系统终端的地方

Windows下的系统提示符,在Unix、Linux或mac OS x的xterm或者终端窗口。

指出运行保存在一个脚本文件中的代码的四种或者更多的方法

一个脚本(实际 上是模块)文件中的代码可以通过系统命令行、文件鼠标点击、导入和重载,exec内置函数以及像IDLE的Run→Run Module菜单选项这样的IDEGUI选取来运行。

指出在Windows下点击文件图标运行脚本的两个缺点

打印后退出的脚本会导致输出文件马上消失,在你能够看到输出之前,你的脚本产生的同样显示在输出窗口的错误信息,会在查看其内容前关闭(这也是对大多数开发任务,系统命令和IDLE这类IDE之所以更好的原因。)

在IDLE中怎样运行一个脚本?

在默认的情况下,Python每个进程只会导入一个模块一次,所以如果你改变了它的源代码,并且希望在不停止或者重新启动Python的情况下运行其最新的版本,你将必须重载它。在你重载一个模块之前至少已经导入了一次。在系统命令行汇总运行代码,或者通过图标点击,或者像使用IDLE这样IDE,这不再是一个问题,因为这些启动机制网管网每次都是运行源代码的最新版本。

列举两个使用IDLE的潜在缺点

在你希望运行的文件所在的文件编辑窗口,悬着窗口的Run→Run Module菜单选项。这可以将这个窗口的源代码作为顶层脚本文件运行,并在交互Pythonshell窗口显示其输出。

什么是命名空间,它和模块文件有什么关联

命名空间就是变量(也就是变量名)的封装。它在Python中以一个带有属性的对象形式出现。每个模块文件自动成为一个命名空间;也就是说,一个对变量的封装,这些变量对应了顶层文件的复制。命名空间可以避免在Python程序中的命名冲突——因为每个模块文件都是独立玩呗的命名空间,文件鼻血明确的导入其他的文件才能使用这些文件的变量名。

列举4个Python核心数据类型的名称

数据、字符串、列表、字典、元组、文件和集合一般被认为是核心对象(数据)类型。类型、None和布尔型有时也被定义在这样的分类中。还有数字类型(整数、浮点数、复数、分数和十进制数)和多种字符串类型。

为什么我们把他们称作“核心”数据类型?

它们被认作是“核心”类型是因为他们是Python语言资深的一部分,并且总是有效的,为了建立其他的对象,通常必须调用被导入模块的函数。大多数核心类型都有特定的语法去生成其对象。

“不可变性”代表什么,哪三种核心数据被认为是具有不可变性的?

一个具有不可变性的对象是一个在其创建以后不能够被改变的对象。Python中的数据、字符串和元组都是属于这个分类。尽管无法的改变一个不可变的对象,但是你总是可以通过运行一个表达式创建一个新的对象。

“序列”是什么依稀,哪三种核心数据被认为是这个分类中的?

一个序列是一个对位置进行拍讯的对象的集合。字符串、列表和元组是Python中所有序列。他们共同拥有一般的序列操作,例如:索引、合并以及切片,但各自有自己的类型特定的方法调用。

“映射”是什么意思,那种Python的核心类型是映射?

术语映射,表示将键与相互关联映射的对象。Python的字典是其核心数据类型几种唯一的映射类型。应该设没有从左至右的位置顺序,他们支持通过键获取数据,并包含了类型特定的放大调用。

什么是多态,为什么我们要关心多态?

多态以为着一个操作符(如+)的意义区却于被操作的对象。这将变成使用好Python的关键思想之一,不要把代码限制在特定的类型上,使代码自动使用于多种类型。

思考下面三条聚聚。它们会改变A打印出的值嘛?

1 A = "spam"
2 
3 B = A
4 
5 B = "shrubbery"

不会,A仍会作为“spam”进行打印。当B赋值为字符串"shrubbery"时,所发生的变量B被重新设置为所指向了新的字符串对象。

A和B最初共享了同一个字符串对象“spam”,但是在Python中这个连个变量名从未链接在一起。因为,设置B为另一个不同的对象对A没有影响。如果这里最后的语句变为B = B+“shrubbery”,也会发生同样的事情。

另外,合并操作创建了一个新的对象作为其结果,并将这个值只赋值给了B。我们永远都不会在远处覆盖一个字符串(数字或者元组),因为字符串是不可变的。

思考下面三条语句。它们会改变A的值嘛?

A = ["spam"]

B = A

B[0] = "shrubbery"

会改变A的值,A现在打印为[“shrubbery”],从技术上讲,我们既没有改变A也没有改变B,我们改变的是这两个变量共同引用的对象一部分,通过变量B在远处覆盖了这个对象的一部分内容。因为A像B一样引用了同一个对象,这个改变也会对A产生影响。

思考下面三条语句。它们会改变A的值嘛?

A = ["spam"]

B = A[:]

B[0] = "shrbbery"

不会,A仍然会打印为[‘spam’]。由于切片会在被复制给B钱创建一个拷贝,这次对B在原处赋值就不会影响了。在第二个赋值语句后,就有了两个拥有相同值的不同列表对象了(在Python中,我们说它们是==的,却不是is的)。第三条复制语句会边改指向B的列表对象,而不会改变指向A的列表对象。

最后,感谢您的阅读。您的每个点赞、留言、分享都是对我们最大的鼓励,笔芯~

如有疑问,欢迎在评论区一起讨论!

以上是关于当面试官问这些基础的Python问题时,竟然还有80%的人不会!的主要内容,如果未能解决你的问题,请参考以下文章

当面试官问这些基础的Python问题时,竟然还有80%的人不会!

当面试官问:“你还有什么要问我”,怎样回答才最加分?

当面试官问线程池时,你应该知道些什么?

当面试官问 Runloop 时,想听到的答案是什么?

当面试官问你:如何进行性能优化?

当面试官问我Mybatis初始化原理时,我笑了