Python基础

1.为什么学习Python

因为自己本身想学习编程,在同学和朋友的推荐下,我最后选择了Python。

Python这门语言,入门比较简单,它简单易学,生态圈比较强大,涉及的地方比较多,特别是在人工智能,和数据分析这方面。在未来我觉得是往自动化,人工智能这方面发展的,所以学习了Python。

2.Python和其他语言的区别

从三个方面看Python

  • *语言特点

简洁 优雅 省略了各种大括号和分号,还有一些关键字,类型说明

  • *语言类型

解释型语言,运行的时候是一行一行的解释,并运行,所以调试代码很方便,开发效率高.

  • *第三方库

python是开源的,并且python的定位时任由其发展,应用领域很多
比如Web,运维,自动化测试,爬虫,数据分析,人工智能.Python具有非常完备的
第三方库
3.Python的优势

  1. 简单:Python奉行简洁主义,易于读写,它使你能够专注于解决问题而不是去搞明白语言本身。
  2. 免费:Python是开源软件。这意味着你不用花一分钱便能复制、阅读、改动它,这也是Python越来越优秀的原因——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
  3. 兼容性:Python兼容众多平台,所以开发者不会遇到使用其他语言时常会遇到的困扰。
  4. 面向对象:Python既支持面向过程,也支持面向对象编程。在面向过程编程中,程序员复用代码,在面向对象编程中,使用基于数据和函数的对象。
  5. 丰富的库:Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。
  6. 规范的代码:Python采用强制缩进的方式使得代码具有极佳的可读性。
  7. 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

4.Python的解释器种类?

Python解释器主要有以下几个:

1、CPython

官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广且被的Python解释器。

2、IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

3、PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

4、Jython

Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

5、IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

在这些Python解释器中,使用广泛的是CPython 。
5.python2和python3区别

一、核心类差异

  1. Python3 对 Unicode 字符的原生支持。
    Python2 中使用 ASCII 码作为默认编码方式导致 string 有两种类型 str 和 unicode,Python3 只
    支持 unicode 的 string。Python2 和 Python3 字节和字符对应关系为:
  2. Python3 采用的是绝对路径的方式进行 import
    Python2 中相对路径的 import 会导致标准库导入变得困难(想象一下,同一目录下有 file.py,如
    何同时导入这个文件和标准库 file)。Python3 中这一点将被修改,如果还需要导入同一目录的文件必
    须使用绝对路径,否则只能使用相关导入的方式来进行导入。
  3. Python2 中存在老式类和新式类的区别,Python3 统一采用新式类。新式类声明要求继承 object,
    必须用新式类应用多重继承。
  4. Python3 使用更加严格的缩进。Python2 的缩进机制中,1 个 tab 和 8 个 space 是等价的,所
    以在缩进中可以同时允许 tab 和 space 在代码中共存。这种等价机制会导致部分 IDE 使用存在问题。
    Python3 中 1 个 tab 只能找另外一个 tab 替代,因此 tab 和 space 共存会导致报错:TabError:
    inconsistent use of tabs and spaces in indentation.

二、废弃类差异

  1. print 语句被 Python3 废弃,统一使用 print 函数
  2. exec 语句被 python3 废弃,统一使用 exec 函数
  3. execfile 语句被 Python3 废弃,推荐使用 exec(open(“./filename”).read())
  4. 不相等操作符”<>”被 Python3 废弃,统一使用”!=”
  5. long 整数类型被 Python3 废弃,统一使用 int
  6. xrange 函数被 Python3 废弃,统一使用 range,Python3 中 range 的机制也进行修改并提高
    了大数据集生成效率
  7. Python3 中这些方法再不再返回 list 对象:dictionary 关联的 keys()、values()、items(),zip(),
    map(),filter(),但是可以通过 list 强行转换:
  8. mydict=
  9. mydict.keys() #
  10. list(mydict.keys()) #[‘a’, ‘c’, ‘b’]
  11. 迭代器 iterator 的 next()函数被 Python3 废弃,统一使用 next(iterator)
  12. raw_input 函数被 Python3 废弃,统一使用 input 函数
  13. 字典变量的 has_key 函数被 Python 废弃,统一使用 in 关键词
  14. file 函数被 Python3 废弃,统一使用 open 来处理文件,可以通过 io.IOBase 检查文件类型
  15. apply 函数被 Python3 废弃
  16. 异常 StandardError 被 Python3 废弃,统一使用 Exception

三 、修改类差异

  1. 浮点数除法操作符”/”和”//”的区别
    ” / “:
    Python2:若为两个整形数进行运算,结果为整形,但若两个数中有一个为浮点数,则结果为
    浮点数;
    Python3:为真除法,运算结果不再根据参加运算的数的类型。
    “//”:
    Python2:返回小于除法运算结果的最大整数;从类型上讲,与”/”运算符返回类型逻辑一致。
    Python3:和 Python2 运算结果一样。
  2. 异常抛出和捕捉机制区别
    Python2
  3. raise IOError, “file error” #抛出异常
  4. except NameError, err: #捕捉异常
    Python3
  5. raise IOError(“file error”) #抛出异常
  6. except NameError as err: #捕捉异常
  7. for 循环中变量值区别
    Python2,for 循环会修改外部相同名称变量的值
  8. i = 1
  9. print (’comprehension: ‘, [i for i in range(5)])
  10. print (’after: i =’, i ) #i=4
    Python3,for 循环不会修改外部相同名称变量的值
  11. i = 1
  12. print (’comprehension: ‘, [i for i in range(5)])
  13. print (’after: i =’, i ) #i=1
  14. round 函数返回值区别
    Python2,round 函数返回 float 类型值
  15. isinstance(round(15.5),int) #True
    Python3,round 函数返回 int 类型值
  16. isinstance(round(15.5),float) #True
  17. 比较操作符区别
    Python2 中任意两个对象都可以比较
  18. 11 < ‘test’ #True
    Python3 中只有同一数据类型的对象可以比较
  19. 11 < ‘test’ # TypeError: unorderable types: int() < str()

四、第三方工具包差异
五、工具安装问题
6.深拷贝和浅拷贝的区别是什么?

深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。
假设B复制了A,修改A的时候,看B是否发生变化:
如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同值)

浅拷贝(shallowCopy)只是增加了一指针指向已存在的内存地址。
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存

使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。

浅拷贝:仅仅时指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。
深拷贝:在计算机中开辟一块新的内存地址用于存放复制的对象。

但是在python中,对浅拷贝和深拷贝,还需要分数据类型是可变类型还是不可边类型。
可变数据类型 不可变数据类型

7.位和字节的关系?

位: "&#x4F4D;(bit)"是电子计算机中最小的数据单位。每一位的状态只能是 01

字节: 8个二进制位构成 1"&#x5B57;&#x8282;(Byte)",它是存储空间的基本计量单位。 1个字节可以储存 1个英文字母或者半个汉字,换句话说, 1个汉字占据 2个字节的存储空间。
8.b、B、KB、MB、GB 的关系?

b &#x6BD4;&#x7279;bit / &#x4F4D;
B&#x2014;&#x2014;&#x5B57;&#x8282;      1  = 8b&#xFF08;8&#x4E2A;bit/ &#x4F4D;&#xFF09;&#x4E00;&#x4E2A;&#x5B57;&#x8282;&#xFF08;byte&#xFF09;&#x7B49;&#x4E8E;8&#x4F4D;&#xFF08;bit&#xFF09;
KB&#x2014;&#x2014;&#x5343;&#x6BD4;&#x7279;   1  = 1024  (kB - )
MB&#x2014;&#x2014;&#x5146;&#x6BD4;&#x7279;   1  = 1024  (MB - )
GB&#x2014;&#x2014;&#x5409;&#x6BD4;&#x7279;   1  = 1024  (GB - )

9.python递归的最大层数?

import sys
sys.getrecursionlimit()    # &#x83B7;&#x53D6;&#x6700;&#x5927;&#x9012;&#x5F52;&#x5C42;&#x6570;  &#x9ED8;&#x8BA4;&#x662F;1000&#xFF08;0-999&#xFF09;
sys.setrecursionlimit(1200)    # &#x8BBE;&#x7F6E;&#x6700;&#x5927;&#x9012;&#x5F52;&#x5C42;&#x6570;

10.解释 Python 中的 help() 函数和 dir() 函数。

help() 函数返回帮助文档和参数说明:

运行结果如下:

Help on function copy in module copy

copy(x)

Shallow copy operation on arbitrary Python objects.

See the module』s doc string for more info.

dir() 函数返回对象中的所有成员 (任何类型)
11.当退出 Python 时是否释放所有内存分配?

答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放

另外不会释放 C 库保留的部分内容。
12.什么是 Python 字典?

字典是我在 C++和 Java 中没有见过的数据结构,它拥有键-值对

3

字典是可变的,我们也可以用推导式的方式创建它.

{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}

要了解更多字典的内容请点击 Python Dictionaries( https://data-flair.training/blogs/python-dictionaries/)
13. _能否解释一下 args 和 _ kwargs?

如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。

3

2

1

4

7

当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。

a.1

b.2

c.7

使用 args 和 kwargs 作为参数名只是举例,可以任意替换。

对于 Python 的基础题任何疑问,请在评论区提问。
14.什么是负索引?

我们先创建如下列表:

与正索引不同,负索引是从右边开始检索。

6

同样可以用于列表的切片:

[3, 4, 5, 6, 7]
15. 如何随机打乱列表中元素,要求不引用额外的内存空间?

我们用 random 包中的 shuffle() 函数来实现。

[3, 4, 8, 0, 5, 7, 6, 2, 1]
16.解释 Python 中的 join() 和 split() 函数

join() 函数可以将指定的字符添加到字符串中。

‘1,2,3,4,5’

split() 函数可以用指定的字符分割字符串

[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
17.Python 区分大小写吗?

验证 Python 是否区分大小写的方法是测试 myname 和 Myname 在程序中是不是算同一个标识符。观察以下代码的返回结果:

Myname

NameError: name ‘Myname’ is not defined

如你所见,这里出现了 NameError,所以 Python 是区分大小的语言。
18.Python 中标识符的命名规则?

Python 中的标识符可以是任意长度,但必须遵循以下命名规则:

  1. 只能以下划线或者 A-Z/a-z 中的字母开头。
  2. 其余部分只能使用 A-Z/a-z/0-9。
  3. Python 标识符区分大小写。
  4. 关键字不能作为标识符。Python 有以下这些关键字: Python基础

19.如何删除字符串中的前置空格

前置空格是第一个非空格字符前的所有空格,使用 lstrip() 函数来删除.

‘Ayushi ‘

如图这个字符串既包含前置空格也包含后置空格. 调用 lstrip() 函数去除了前置空格。如果想去除后置空格,使用 rstrip() 函数。

‘ Ayushi’
20.Python 中的 pass 语句有什么作用?

我们在写代码时,有时可能只写了函数声明而没想好函数怎么写,但为了保证语法检查的正确必须输入一些东西。在这种情况下,我们使用 pass 语句。

类似的 break 语句可以跳出循环。

0

1

2

continue 语句可以跳到下一轮循环。

0

1

2

4

5

6
21.请解释 Python 中的闭包?

如果在一个内部函数里。对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。

7

闭包的详细解释请点击 Closures in Python。(https://data-flair.training/blogs/python-closure/)
22.解释 Python 中的//,%和运算符 **

//运算符执行地板除法,返回结果的整数部分 (向下取整)。

3

用/符号除法结果为 3.5。

符号表示取幂. ab 返回 a 的 b 次方

1024

% 是取模符号。返回除法后的余数。

6

0.5
23.Python 中有多少种运算符,解释算术运算符。

这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题。

在 Python 中我们有 7 中运算符:算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。

\1. 加号 (+) 将两个对象的值相加。

15

\2. 减号 (-) 将第一个对象的值减去第二个对象的值。

-1

\3. 乘号 (*) 将两个对象的值相乘。

56

\4. 除号 (/) 将第一个对象的值除以第二个对象的值。

0.875

1.0

关于地板除法、取模和取幂,请参考上一个问题。
24.解释 Python 中的关系运算符。

关系运算符用来比较两个对象。

\1. 判断小于 (

Original: https://www.cnblogs.com/sunlincode/p/16742542.html
Author: 小孙不是程序员
Title: Python基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579612/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球