python重要知识点

Python是一个面向对象的解释型的交互式高级脚本语言:Python被设计成一种高可读性的语言,因为它大量地使用了英语中的单词作为关键字,而且不像其他语言使用标点符号构成复杂的语法结构,Python的语法结构非常少。
Python是一种面向对象的语言:即Python是支持面向对象的,支持在对象中进行代码封装。
Python是一种解释型语言:即Python程序是在运行时由解释器解释执行的,因而不用事先编译源程序。这一点和Perl和PHP类似。
Python是一种交互式语言:即你能够在Python提示符下直接交互式地编写你的程序。
Python是初学者的语言:Python是一种非常适合初学者的语言,它支持多种类型的应用程序的开发,如简单的文本处理、www浏览器应用程序开发、游戏开发等等。

参考资料一
参考资料二

1)什么是Python?使用Python的优点有哪些?缺点有哪些?

Python是一种面向对象的解释性的交互式语言,带有对象、模块、线程、异常和内存自动管理的机制。
使用Python的优点有:简单、易学、轻便可移植、可扩展、可读性、具有多种内建数据类型、开源等等。
使用Python的缺点有:运行速度慢,代码不能加密(解释性语言,发布python应用只能发布源代码,不像C发布编译后的应用文件)

2)什么是PEP 8?

PEP 8是一种编码规范,是一系列关于如何让Python代码更加具有可读性的编码建议。

3)什么是序列化(pickling)和反序列化(unpickling)?

序列化:将在内存中的变量转为可存储或传输的过程。应用JSON传输,序列化为统一格式json
反序列化:与序列化的过程相反
Pickle模块允许我们将Python对象转换成一个string表示的信息,并且可以使用dump函数将其保存到一个文件中去,这样的过程称为序列化。而使用文件中保存的对象信息重构Python对象的过程称为反序列化。

4)Python是如何被解释执行的?

Python是一种解释型语言,它可以直接从源代码运行程序。程序员编写的源代码首先转变成一种中间语言代码,然后再被转换成能够直接执行的机器语言代码。

5)Python是如何进行内存管理的?

Python内存空间是以Python私有堆的形式进行管理的。所有的Python对象和数据结构都存放在一个私有堆中。解释器可以访问私有堆,而程序员不可以。
将Python堆空间中的内存分配给Python对象的工作是由Python内存管理器完成的。而内核API则会提供给程序员一些相关的工具来完成涉及到内存的编码工作。
Python还内置垃圾回收器,从而进行回收释放内存到堆空间。

6)能够找到程序中的bug进行静态分析的工具有哪些?

PyChecker是一种能够发现Python源代码中的bug并对其中的代码风格和复杂度进行警告的静态分析工具。另外一种工具是Pylint,它能够验证模块是否满足编码标准。

7)什么是Python装饰器?

用来装饰一个函数从而使这个函数在不修改本身的函数定义外,动态产生额外的功能;装饰函数的入参为需要被装饰的函数。装饰器本质上是一个返回函数的高阶函数
一个Python装饰器是我们在符合Python语法的同时又方便地对函数做的一些特定的修改。

8)列表、元组、集合、字典的区别是什么?

列表:元素可变(任何数据类型),有序(可索引),append/insert/pop;
元组:元素不可变,但元素中的可变元素是可变的;有序(可索引);而且元组可以被散列,例如作为字典的键。
集合:无序(不可被索引)、互异
字典:无序,键值对(key:value),key唯一不可重复

9)怎样理解字典和列表?

它们是一种用来创建可变对象的语法结构,数据容器。
dic插入、查找速度比list快,不会随key的增加而增加,但list会随着元素的增加而增加(偏移量)

10)参数是如何通过值或者引用传递的?

python中确切说应该是“传对象引用”的方式,引用对象传递。 一切皆对象,参数皆引用
如果函数收到的是一个可变对象(比如列表、字典)的引用,则可修改对象的原始值相当于“引用传递”方式;
如果函数收到的是一个不可变对象(比如数字、字符、元组),就不能直接修改原始对象指向的值
相当于“值传递”方式;

11)Python数据类型

python中数据类型可以分为内置类型和自定义类型。其中内置类型分为可变类型和不可变类型。
可变类型:

  • 列表、集合、 字典

不可变类型:

  • 字符串 、元组、 数字

内置类型:

  1. 数值类型:number
  2. 字符串类型:string
  3. 布尔类型:boolean
  4. 空类型: None
  5. 列表类型:list
  6. 元组类型:tuple
  7. 字典类型:dict

自定义类型:class

(1)数值类型
数值类型分为两种,整形(int)、浮点型(float)

整形
整形就是我们说的整数,0也是整数,但是特殊的整数 int是整形的代表,又是定义整形的内置函数 定义整形有两种语法规则
1、使用int内置函数:int(value)
2、直接复制:num = value

浮点型
浮点型就是我们生活中的小数,基本带小数点的数字我们基本称为float浮点型
在python中,float即使浮点型的代表,又是内置函数定义 语法:
1、使用内置函数float函数定义浮点数:f1 = float(value)
2、使用直接赋值定义浮点数:f2 = value

(2) 字符串类型
用单引号‘str’或者双引号"str"包裹的信息就是字符串
字符串中可以包含任意字符:如字母、数字、符号,且没有先后顺序
在python中,使用str来代表字符串类型,并且通过str函数来定义字符串
字符串是不可以改变的,如果改变了,他的内存地址会改变

字符串内置函数len()函数的使用

  • len()函数返回字符串的长度
  • 无法返回数字类型的长度,因为数字类型没有长度
  • 语法:返回值 = len(’字符串‘)

字符串内置函数in和not in的使用

  • in()和not in()内置函数在字符串中判断字符串中是否你要的成员
  • 语法:结果 = ‘str1’ in ‘str2’
  • 语法:结果 = ‘str1’ not in ‘str2’
  • in如果在里面返回true,不在返回false
  • not in 不在返回true,在返回false

内置函数max()和min()在字符串中的使用

  • max函数返回数据中最大的成员

  • 大小:中文字符>字母>数组>英文字符

  • 中文按照拼音的首字母来计算

  • 语法:max(str)

  • min()函数返回数据中最小的成员

  • 大小:中文字符>字母>数组>英文字符

  • 中文按照拼音的首字母来计算

  • 语法:min(str)

(3) 布尔类型

  • 布尔类型是对真假的判断
  • 默认值:True 代表真,False代表假
  • bool代表布尔类型,也可以对于结果进行真假的判断
  • 在计算机中,非0为True,0为false,空字符串为False,非空字符串为True

(4)空类型

  • 空类型不输入任何数据类型
  • 默认值为:None
  • 空类型属于False
  • 如果不确定类型的时候,可以使用空类型默认值

(5)列表类型

  • 列表就是队列,他是各种数据类型的集合,也是一种数据结构
  • 列表是有序的,内容可重复的集合类型
  • 集合中可以定义不同的数据类型
  • 定义列表类型可以使用内置函数list([ele,ele2])
  • 也可以直接使用[]定义列表,列表的元素都存储在[]中
  • 在Python中,列表是一个无限制长度的数据结构

(6)元组类型

  • 元组与列表一样,都是一种可以存储多种数据结构的队列
  • 元组是一个有序的,且元素可以重复的集合
  • 在python中,typle代表着元组这种数据类型,也可以用它来定义一个元素
  • 元组定义是存在一个小括号中(ele,ele2,…,elen)
  • 元组是一个无限制长度的数据结构
  • 与列表相比,元组比列表占用资源更小,列表是可变的,元组是不可变的

in、max、min内置函数在list列表的使用和list差不多,但是需要注意的是,元组中的元素不能是多种类型,如果类型不同意,则会报错

(7)字典类型

  • 字典是由多个键key及其对应的值value所组成的一种数据类型
  • 在python中,dict用来代表字典,并且可以使用dict()函数来创建字典
  • 可以通过{}来将一个个key和value存入字典中
  • key键支持字符串、数组、元组乐行,但是不支持列表
  • value值支持所有的数据类型
  • 在python3.7之前字典是无序的,3.7之后是有序的
  • 字典中每一个key是唯一的,不能重复

12)Python中的命名空间是什么?

名字到对象的一个映射;
一个对象拥有一个ID(内存地址)、一个类型、一个值,但可以有不同的名字,比如:a=1,b=a,a和b指向同一个对象;
命名空间就是用来映射这个关系的;

13)Python中的lambda表达式是什么?

lambda表达式是一个匿名函数,省去了对函数命名,所以叫匿名函数。通常用作代码行内的嵌入函数。

14)为什么Python中的lambda表达式没有声明?

Python中的lambda表达式没有声明是因为它只是用来创建一个新的函数对象,并且在运行时才返回值给对象。

15)Python中的pass是什么意思?

pass是Python中的空操作语句,或者说,它是一个复杂语句中的一个空间占位符,只是用来表示空白,什么都不用写。

16)Python的迭代器是什么?

迭代器是用来迭代可迭代对象的,比如包含一组元素的列表。 iter()生成迭代器对象,next()依次访问迭代器对象的下一个值

17)Python中的unittest是什么?

unittest是Python中的单元测试框架。它支持共享的测试建立、自动测试、关闭测试、聚集测试等等。

18)什么是切片?

从一组序列中截取一段序列的机制,比如列表、元组、字符串等类型中选择一个范围中的元素。

19)Python中的生成器是什么?

一种特殊的迭代器,用关键字yield表示, 它特殊的地方在于运用在函数中函数体没有 return返回 ,而是使用关键字yield返回值,yield每返回一次, 函数状态挂起 。 这种函数叫做生成器函数,被调用时返回一个生成器对象 ;

20)Python中的docstring是什么?

docstring是一个py文件、函数、类开头部分的用’''编写的一段注释文档和说明,通过help函数可查看该文档说明。
docstring是Python中产生文档的方式,它可以为Python中的函数、模块和类产生说明文档。

21)Python中如何拷贝一个对象?

使用标准库的copy模块:copy.copy()浅拷贝,copy.deepcopy()深拷贝
copy.copy()浅拷贝:拷贝了对象,但拷贝对象的值仍然是指向原对象的值(相当于引用),修改拷贝对象的元素,则被拷贝对象的值也会被修改
copy.deepcopy()深拷贝: 不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立;但这需要牺牲一定的时间和空间。

22)Python中负的索引是什么意思?

Python中可以使用整数和负数进行索引。对于正索引,0是第一个,1是第二个,以此类推。对于负索引,-1是最后一个,-2是倒数第二个,以此类推。

23)怎样将一个数字转换成字符串?

使用内置函数str()即可。如果想要八进制或者十六进制的形式,可以使用oct或者hex函数。

24)xrange和range的区别是什么?

xrange返回一个xrange生成器对象,而range返回一个list对象。
生成很大数列的时候,range会使用和其范围大小相同的内存;相比xrange的性能要高很多

25)Python中的模块和包是什么?

在Python中,模块就是一种构建程序的方式。每一个Python程序文件都是一个模块,这个文件还可以引入其他模块如对象和属性等。
包就是一个带有__init__.py文件的文件夹,里面可包含多个模块

26)@property、@staticmethod、@classmethod:

@property:特性,被其装饰过的方法(函数),可以当成属性一样去调用和访问。如:a()是一个方法==》c.a(对象.属性)调用
@staticmethod:静态方法,被其装饰的函数中不含self参数,相当于类外面的方法,但会在类中被调用(跟类有关系但在运行时又不需要实例和类参与)。通过类名调用
@classmethod:类方法,通过类名调用(一般类中的方法是实例方法,通过实例调用),使用时将类作为方法的第一个参数传入,如:
@classmethod
def test(cls):
print(cls,cls.x)

27) 如何理解self?

self为类中方法的默认第一个参数,self指向创建的实例本身。 调用时 self 不需要传,Python解释器自己会把实例变量传进去

28)python文件格式以及语法规则

  • python文件后缀以py结尾 一行一个语句,不用以分号做结尾

  • 如果一行上有多个语句,则每个语句必须以分号做结尾

  • 文件名尽量不用使用中文,不要包含空格 不要混合使用tab键和空格缩进,缩进用于区分代码块

  • 除了在引号里(单引号、双引号)中,其它地方不要使用中文,要用英文半角 python编码规范遵循

  • PEP8(https://www.python.org/dev/peps/pep-0008/)

  • 参考链接

29)变量命名规范和风格

变量名也可称之为标识符(变量名、函数名、类名、包名等统称为标识符)
其命名要符合python的语法要求

  • 由数字、字母、下划线组成,不能以数字开头
  • 严格区分大小写
  • 不能是python的关键字(保留字)

变量命名风格

  • 见名知意,有自描述性
  • 不建议使用中文命名变量
  • 一般变量可以用小驼峰规则:变量名由多个单词组成,第一个单词首字母小写,其它单词首字母大写
  • 也可以全部变量名都小写,单词之间用下划线分隔

30)变量和内存和in()、type()函数

  • python中一切都是对象,python中变量保存了对象的引用
  • 变量的好比是一个容器,容器中保存的变量所指对象的引用(地址)
  • 变量本身是没有类型的,变量的类型是指其所指对象的类型
  • 比如说变量是一个瓶子,盛了醋就是醋瓶,盛了酱油就是酱油瓶
  • python中变量的所指对象的地址可以用id函数获取
  • 获取变量的类型可以使用type函数
parm = '12'
# id(num)函数的使用
print('变量内存中的地址:', id(parm))

# type(parm)函数的使用
print('这个变量的数据类型:', type(parm))

# 变量内存中的地址: 2485244079216
# 这个变量的数据类型: <class 'str'>

31)Python的输入输出input() &print()&return

input()函数语法规则:result = input(‘输入内容’)

  • 接受一个标准输入数据,返回string数据类型
  • 在命令行输入一行信息,会将这行信息返回成字符串,要得到其他类型信息要转换
  • 转换为整数:a = int(a)
  • 转为小数:a = float(a)
  • 不确定是小数还是还是整数:a = eval(a)

print()函数语法规则:print(object,end = ‘’)

  • 将你希望的信息在控制台输出
  • end =‘结尾符,默认是换行’

函数返回:return语句

  • 执行到return语句时,会退出函数,return之后的语句不再执行
  • 但将return语句放在try语句块中,是个例外
def func():
    try:
        print(33)
        return 22 #函数得到了一个返回值
    finally:   #finally语句块中的语句依然会执行
        # return True
        print(5555)
print(func())

### output
33
5555
22
def func():
    try:
        print(33)
        return 22 #函数得到了一个返回值
    finally:   #finally语句块中的语句依然会执行
        return True
        # print(5555)
print(func())

## output,最后一个return才有效?
33
True

32)Python的运算符和表达式

在以前数据中,70+80的运算我们在计算机中称为表达式,其中的+号称为运算符
(1)算数运算符
a=10;b=20
在这里插入图片描述
(2)比较运算符
a=10;b=20
在这里插入图片描述
(3) 赋值运算符
在这里插入图片描述
(4) 位运算
在这里插入图片描述
(5)成员运算符
在这里插入图片描述
(6)身份运算符
出、
(7)逻辑运算符
在这里插入图片描述
(8)运算符优先级
在这里插入图片描述

33)range(10, 2, -1)

range函数的反向输出, 步长为1

for item in range(10, 5, -1):
    print(item)

### ----------------output
10
9
8
7
6

34) python 交换操作

交换操作,有时称为 swap ,在 Python 中与在大多数其他编程语言略有不同。通常,交换列表中的两个元素需要临时 存储位置(额外的内存位置)。 代码片段如下:

temp = alist[i] 
alist[i] = alist[j] 
alist[j] = temp

将交换列表中的第 i 项和第 j 项。没有临时存储,其中一个值将被覆盖。 在Python中,可以执行同时赋值。 语句 a,b = b,a 两个赋值语句同时完成(参见 Figure 2)。使用同时分配,交换 操作可以在一个语句中完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值