Day06

一,常见知识点整合

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.7\python文件\python.exe D:/学习资料/项目/练习/lianxi.py
False

进程已结束,退出代码0

输出的结果为False

a  b两个变量的值相同

a = "huao"
b = "huao"
print(a==b)

运行结果:

D:\常用软件\Python3.7\python文件\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.7\python文件\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

  

 

posted @ 2019-10-18 16:18  江湖混子  阅读(156)  评论(0编辑  收藏  举报