python知识点
整理一下刷2019年python赛道选择题知识点
1.python2和python3的区别
特性 | Python 2 | Python 3 |
---|---|---|
print 语句 / 函数 | 用 print 语句,无需括号(如 print "hello" );若加括号,会被解析为元组(如 print ("a", "b") 输出 ('a', 'b') )。 | 用 print() 函数,必须加括号(如 print("hello") );支持更多参数(如 print("a", "b", sep="-") 输出 a-b )。 |
整数除法 | 两个整数相除结果为整数(“地板除”),如 3 / 2 = 1 ;需用 3.0 / 2 或 from __future__ import division 才能得到浮点数 1.5 。 | 整数除法默认返回浮点数,如 3 / 2 = 1.5 ;“地板除” 需用 // ,如 3 // 2 = 1 。 |
字符串编码 | 默认字符串类型为 str (ASCII 编码),Unicode 字符串需加 u 前缀(如 u"中文" )。 | 默认字符串类型为 str (Unicode 编码,直接支持中文等多语言);二进制数据需用 bytes 类型(如 b"abc" )。 |
xrange 与 range | range() 返回列表(如 range(3) 是 [0,1,2] ),xrange() 返回迭代器(节省内存)。 | 仅保留 range() ,功能等同于 Python 2 的 xrange() (返回可迭代对象,而非列表);若需列表,需显式转换(如 list(range(3)) )。 |
input() 与 raw_input() | input() 会将输入解析为 Python 表达式(如输入 1+2 返回 3 );raw_input() 直接返回字符串。 | 仅保留 input() ,功能等同于 Python 2 的 raw_input() (始终返回字符串);若需解析表达式,需用 eval(input()) 。 |
异常处理语法 | except Exception, e 捕获异常并绑定到 e ;raise Exception, "message" 抛出异常。 | 用 except Exception as e绑定异常; raise Exception("message")` 抛出异常(更清晰,兼容面向对象语法)。 |
__future__ 模块 | 需通过 from __future__ import xxx 提前启用 Python 3 的部分特性(如 division 、print_function )。 | 无需该模块,直接支持所有新特性。 |
混合缩进处理 | 在 Python 2 中,一个 tab 键的缩进和 8 个空格的缩进是等价的。允许在同一代码块中混合使用空格和制表符(Tab)缩进,但会抛出 IndentationWarning 警告(不会直接报错)。 | 严格禁止混合缩进,若在同一代码块中同时出现空格和制表符,会直接抛出 IndentationError 错误,强制要求统一缩进方式。 |
2.类的定义
什么是 "类的继承"。简单说,继承就是让一个新的类(叫 "派生类")能使用另一个已有的类(叫 "基类")的功能,就像儿子可以继承父亲的一些东西一样。
class 派生类的名字 : 继承方式 基类的名字 {// 这里写派生类自己的成员(变量或函数) };
这个格式里有几个必须有的部分,少了任何一个都会出错:
必须有
class
关键字,因为我们在定义一个类必须有派生类的名字
必须有冒号
:
必须有继承方式(public、private、protected 中的一种)
必须有基类的名字(这个类必须是已经定义过的)
必须有一对大括号
{}
,里面放派生类自己的内容(哪怕暂时什么都没有,也要写{}
)最后必须有分号
;
然后逐个分析选项
第一个:
class Derived : public Derived { ... };
这里的问题是:派生类
Derived
继承的基类也是Derived
(它自己)。这就像说 "儿子继承了儿子自己",逻辑上完全说不通,所以这是错误的。第二个:
符合上面说的类的定义
第三个:
class Derived : public Orignal;
这个的问题是缺少了大括号
{}
。按照规则,定义类的时候必须有{}
来包含类的内容,就算里面什么都没有,也要写成{}
,不能直接写分号。所以这是错误的第四个:
class Derived : private Orignal;
也是缺少了大括号{}
3.关于python文件对象处理
B. ‘x’ 模式:错误。‘x’ 模式是独占创建模式,用于写数据,不是用于读数据**。如果文件已存在,会抛出 FileExistsError
。所以这个选项的描述是错误的。
字符 | 意义 |
---|---|
'r' | 只读(默认)。文件必须已存在。 |
'w' | 只写。若文件已存在则先清空;不存在则创建。 |
'x' | 独占创建。若文件已存在则抛 FileExistsError ;不存在则创建并只写。 |
'a' | 追加写。若文件存在,写入的数据追加到末尾;不存在则创建。 |
4.Python语言的主要特点
解释型语言
Python 不是一次性编译成机器码执行的,而是 边编译边解释,先编译为字节码,再由解释器执行。
跨平台性
Python 程序可以在 Windows、Linux、macOS 等多个平台运行,只需少量或无需修改代码。
易读易写
语法简洁、接近自然语言,可读性和开发效率高。
面向对象与面向过程并存
既支持 面向对象编程(OOP)(类、继承、多态等),也支持 面向过程/函数式编程。
丰富的标准库和第三方库
拥有庞大的标准库(标准模块)和第三方库,适合 Web、数据分析、人工智能、科学计算等。
可扩展性与可嵌入性
可通过 C/C++ 扩展模块 提升性能,
也可以嵌入到 C/C++ 程序中作为脚本引擎。
动态类型 & 自动内存管理
变量无需声明类型(动态类型),
内存由垃圾回收机制(GC)自动管理。
📌 考试答题口诀: “跨平台,边编译边执行;面向对象也支持过程;库丰富,可扩展可嵌入;语法简洁,动态类型,自动内存管理。”
5.语言对比描述
Python 可以非常方便地调用 C/C++ 编译后的动态库,甚至直接嵌入运行;同理也可调用 Fortran、Rust、Go 等导出的 C 接口。官方文档把这一能力视为 Python 的“胶水语言”核心特征。
Python 是动态类型语言,变量无需预先声明类型,赋值即定义(无需事先定义变量)
(干啥都么劲是怎么个事?)