一,常见知识点整合
python2 和python3 中的输出:
在py2中print a 就行不需要括号
在py3中必须加括号
py2
代码演示:
1 Python 2.7.16 (v2.7.16:413a49145e, Mar 4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32 2 Type "help", "copyright", "credits" or "license" for more information. 3 >>> a = "huao" 4 >>> print a 5 huao 6 >>>
py3
代码演示
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a = "胡澳" >>> print a File "<stdin>", line 1 print a ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print(a)? >>> print(a) 胡澳 >>>
可以看出py2中不使用括号能够正常进行输出。而在py3中会进行报错。py3中必须使用()才能输出
py3中 is 和 == 和 =的区别:
= 表示赋值的意思
== 表示主要是比较两个变量的值是否相等
is 主要是用来比较两个变量的内存地址是否相等
a b 两个变量的值不相同
代码演示:
a = "huao" b = "胡澳" print(a==b)
运行结果:
D:常用软件Python3.7python文件python.exe D:/学习资料/项目/练习/lianxi.py
False
进程已结束,退出代码0
输出的结果为False
a b两个变量的值相同
a = "huao" b = "huao" print(a==b)
运行结果:
D:常用软件Python3.7python文件python.exe D:/学习资料/项目/练习/lianxi.py
True
进程已结束,退出代码0
输出的结果为Ture
a , b 赋值给另一个变量的时候:
a = "huao" b = a print(b is a) print(id(b),id(a))
运行结果:
D:常用软件Python3.7python文件python.exe D:/学习资料/项目/练习/lianxi.py True 1630415246144 1630415246144 进程已结束,退出代码0
可以看出
python中的赋值并不是改变内存地址,而是给原来的地址上再添加一个映射关系。
is用来判断变量的内存是否相等
id()函数用来查看变量的地址
数字的小数据池概念:
代码演示:
>>> i = 23 >>> b = 23 >>> print(id(i),id(b)) 140704958371552 140704958371552 >>> i = 500 >>> b = 500 >>> print(id(i),id(b)) 1693296867376 1693296445456 >>>
分析:当等于23的时候,两个变量的内存地址是一样的。当等于500的时候两个变量的内存地址是不一样的
原因就在于在python中存在一个小数据池的概念。
数字的范围是(-5—256)在这个范围内,相同的数字的内存是一样的,这样做的目的就是为了节省内存空间,让资源更加合理化。
所以就出现了小数据池这一概念。
字符串的小数据池概念:
代码演示:
a = "huhuhuhu" >>> b = "huhuhuhu" >>> print(a is b) True >>> a = "a"*20 >>> b = "a"*20 >>> print(a is b) True >>> a = "a"*21 >>> b = "a"*21 >>> print(a is b) True >>> a = "a"*21 >>> b = "a"*21 >>> print(a is b) True >>> a = "a"*22 >>> b = "a"*22 >>> print(a is b) True >>> b = "a"*23 >>> a = "a"*23 >>> print(a is b) True >>> a = "hu*" >>> b = "hu*" >>> print(a is b) False >>>
代码分析:
字符串中不能够有个特殊字符,否则两个变量的地址就会不一样(+,-,*,/,等等一系列的字符都属于特殊字符)
这就是字符串中的小数据池的概念
而python中的其他的数据类型如(list ,dict ,set,tuple )是没有小数据池的这个概念的。
代码演示:
>>> li = [1,] >>> l2 = [1,] >>> print(li is l2) False