欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-04 10:28:52
怎样才能开始一个交互式解释器的会话? 在Windows下可以通过点击开始按钮,选择“程序”,点击“Python”,然后选择“Python(command line)”菜单选项来开始一个交互会话。 你应该在哪里输入系统命令行来启动一个脚本文件? 在输入系统命令行的地方,也就是你所在的平台提供给作为系统 ......

当面试官问这些基础的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程序中的命名冲突——因为每个模块文件都是独立玩呗的命名空间,文件鼻血明确的导入其他的文件才能使用这些文件的变量名。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

思考下面三条聚聚。它们会改变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%的人不会!