一、“==”和“is”之间有什么区别?
python中一般使用**"”比较两个对象的值**。 **"ab"应解释为“ a的值是否等于b的值”**。 在上述所有示例中,a 的值始终等于 b 的值(即使对于空列表示例也是如此)。 因此,“ a == b”始终为真。
python可以使用 id 函数获得对象的标识。 这个身份在整个时间内对于此对象都是唯一且恒定的。此标识在整个时间内对该对象是唯一且不变的。你可以把它看作是这个对象的地址。如果两个对象具有相同的标识,则它们的值也必须相同。
运算符“ is ”是比较两个对象的标识是否相同。“a is b”的意思是“a的身份与b的身份相同”。
a = 5
>>> b = 5
>>> a == b
True
>>> a is b
True
>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
第一个和第二个示例中的结果不同。 原因是Python存储了一个介于-5到256之间的整数的数组列表,每个整数具有固定的标识。当我们在此范围内分配整数变量时,Python会将此变量的标识分配为数组列表内整数的整数。 结果,对于第一个示例,由于a和b的标识都是从数组列表中获得的,因此它们的标识当然是相同的,因此 “a is b” 为True。一旦该变量的值超出该范围,由于 Python 内部没有具有该值的对象,因此Python将为此变量创建一个新的标识并将该值分配给该变量。 如前所述,身份对于每个创建都是唯一的,因此,即使两个变量的值相同,其身份也永远不会相等。 这就是为什么“a is b”在第二个例子结果为False。
对于空列表:Python 不存储“空列表”对象,因此 Python 创建了一个新对象并分配了“空列表”值。无论两个列表为空还是元素相同,结果都是相同的。
>>> a = [1,10,100,1000]
>>> b = [1,10,100,1000]
>>> a == b
True
>>> a is b
False
>>> id(a)
12578024
>>> id(b)
12578056
二、Python 33个保留字
保留字为关键字,是被编程语言内部定义并保留使用的标识符。这些保留字不能用作常数或变数,或任何其他标识符名称。
and
用于表达式运算,逻辑与操作。
as
用于类型转换
assert
断言,用于判断变量或条件表达式的值是否为真
break
中断循环语句的执行
class
用于定义类
continue
继续执行下一次循环
def
用于定义函数或方法
del
删除变量或者序列的值
elif
条件语句 与if else
结合使用
else
条件语句 条件语句,与if,elif结合使用。也可以用于异常和循环使用
except
包括捕获异常后的操作代码,与try
,finally
结合使用
exec
用于执行python语句
for
循环语句
finally
用于异常语句,出现异常后,始终要执行finally包含的代码块。与try,except
结合使用
from
用于导入模块,与import
结合使用
global
定义全局变量
if
条件语句,与else,elif
结合使用
import
用于导入模块,与from
结合使用
in
判断变量是否存在序列中
is
判断变量是否为某个类的实例
lambda
定义匿名函数
not
用于表达式运算,逻辑非操作
or
用于表达式运算,逻辑或操作
pass
空的类,函数,方法的占位符
print
打印语句
raise
异常抛出操作
return
用于从函数返回计算结果
try
包含可能会出现异常的语句,与except,finally
结合使用
while
循环语句
with
简化Python的语句
yield
用于从函数依次返回值
三、python作用域
Python中的作用域共有3种,分别是:
局部作用域:这是在一个函数内部定义的变量;
闭包作用域:这是在一个函数外部另一个函数内部定义的变量;
全局作用域:在所有函数外定义的变量。
四、编译文件后的扩展名
C语言
源文件后缀名是.c,编译生成的文件后缀名是.obj,连接后可执行文件的后缀名是.exe。
java
源文件扩展名是“.java”;用javac进行编译,生成后缀名为“.class”的字节码文件,保存在和源程序一致的目录下,如源代码有错误,会按行指出错误,修改错误后重新进行编译,直至生成“.class”字节码文件为止。
五、线程与进程
进程:
当一个程序进入内存运行时,即变成一个进程。进程时处于运行过程中的程序。进程是操作系统进行资源分配和调度的一个独立单位。
线程:
线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。线程也被称为轻量级进程。线程在进程中是独立、并发的执行流。
进程和线程的区别:
一个进程可以有很多线程,每条线程并行执行不同的任务。
同一