一,变量

  相信大家对于变量都不会很陌生吧,我们从小学解方程的时候的x和y就是变量。那么什么是python的变量呢?

  python变量其实和解方程的变量很相似。



>>>a=1
>>>type(a)
 <class 'int'>
>>>a=1.0
 <class 'float'>
>>>id(a)
 2131613099568



  C语言的变量,必须要先声明这个变量的类型,而python的变量可以根据其付给它的值,而动态的修改类型。那么变量有什么用呢?

  我们可以把变量看做是一个标签,就是你的名字一样的,如果没有了名字,你会怎样。如果别人想认识你,你要怎么介绍自己。python的解释器中有一个机制,当一个数据没有变量名

  或者说是标签与之对应,python就会将其删掉,这样可以减轻内存。python给变量所存储的数据给其一个内存地址。我们可以通过id( )这个函数访问。

  我们看这样一个例子。

  



>>>a=1
>>>a
 1
>>>b=a
>>>b
 1
>>>a=6
>>>a
 6
>>>b
 1



  我们可以这样理解,用a和b这两个变量同时指向1,当a这个变量重新指向另一个数6时,b还是指向1。所以就会出现这样的结果。

二,字符编码

  我们先来了解一下什么是字符编码,我们知道计算是以二进制来存储数据的,计算机比较笨,所以它只能识别0和1,那么我们现在的很多英文符号,各种汉字是怎么存储的呢?

  计算机最开始是由美国人发明的,所以他们设计了一套编码格式。用一个字节(8位)来表示英文中的字母和字符,这就是ASCII码。

Python将英文字符后移三位_ico

  ASCII码最多可以表示255字符这显然对于英文是够用了,但是计算机现在很普及了,世界上这么多的语言这么多的符号,ASCII码根本不够用,那么怎么解决呢?

  拿汉字来说,我大中华文化上下五千年,积累了多少的汉字。中国人民的聪明才智,先后推出了gb2312,gbk等一些可以支持中文的编码格式。但是如果只有这些的话,

  那么如果我在中国写了一个程序,拿到日本去运行,那么就会变成乱码了,所以需要一个统一的规定。这时Unicode诞生了,Unicode又叫万国码,支持很过国家的语言和符号,

  每个字符同一为一个字,及两个字节。Unicode的出现解决了很多的问题,但是这样的话美国佬又不愿意了,本来他们的英文只用一个字节就可以了,现在却要用一个字,这样很

  浪费。这时他们又推出了UTF-8,在UTF-8中英文字符为一个字节,而中文变成了3个字节,总感觉好坑。

  

  

  那么对于对于python来说,python2特别的坑,很多人在字符编码中吃了亏,因为python2出现比较早,所以它的默认编码是ASCII码,对于python3来说就很好了,它磨人的是utf-8,

  这样就解决了,编码这个大坑。

  



>>>import sys
>>>print(sys.getdefaultencoding())  #用这个方法可以打印出默认的编码
 'utf-8'



 

  python中不同编码中的转化也很容易。

  

Python将英文字符后移三位_python_02

  python中的转码,都要经过Unicode,比如我们要把utf-8的编码转化为gbk编码,应该先解码,在编码。反之亦然。

  




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

#先解码成Unicode,在编码成gbk
a='我爱中国!'
a=a.decode('utf-8').encode('gbk')
#这时a的编码就是gbk了


View Code


 

 

三,运算

  算数运算:

  

Python将英文字符后移三位_python_05

  




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>a=3+2
>>>a
 5
>>>a=5-6
>>>a
 -1
>>>a=5*6
>>>a
 30
>>>a=5/2
>>>a
 2.5
>>>a=45%10
>>>a
 5
>>>a=2**3
>>>a
 8
>>>a=8/3
>>>a
 2


View Code


 

  比较运算:

  

Python将英文字符后移三位_ico_08




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>3==3
 True
>>>4!=3
 True
>>>3<>4 #这个语法有问题。
>>>3>4
 False
>>>3<4
 True
>>>4>=3
 True
>>>4<=3
 False


View Code


 

  赋值运算:

  

Python将英文字符后移三位_Code_11




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>a=3
>>>a
 3
>>>a+=3
>>>a
 6
>>>a-=3
>>>a
 3
>>>a*=3
>>>a
 9
>>>a/=3
>>>a
 3.0
>>>a%=2
>>>a
 1.0
>>>a**=8
>>>a
 1.0
>>>a//=2
>>>a
 0.0


View Code


  还有一些特别的赋值运算:




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>a=1
>>>b=2
>>>a,b=b,a #交换两个数的值
>>>a
 2
>>>b
 1
>>>a,b=(5,6) #用元组进行赋值
>>>a,b=[55,99] #用列表进行赋值


View Code


  

  逻辑运算:

     只要是大于0或者不为空就都是False。

  

Python将英文字符后移三位_c/c++_16

  什么是逻辑短路:

    拿and来说,只有左右同时为真的时候结果才会为真,如果第一个为假的话,那么第二个就不会判断了,直接返回第一个数据。

    同理or也会有。




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>'' and 2 #第一个为空字符串,所以第一个是假,所以返回为第一个字符。
 ''
>>> 3 or 0 #第一个为3,所以第一个是真,所以直接返回第一个。
 3
>>> not 3
 Flase


View Code


  成员运算:

  

Python将英文字符后移三位_c/c++_19




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>3 in [3,5,6]
 True
>>>3 not in [3,5,6]
 False


View Code


   身份运算: 

  

Python将英文字符后移三位_python_22




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>a=3
>>>b=a
>>>id(a)
 1720525584
>>>id(b)
 1720525584
>>> b is a
 True
>>>b is not a
 False


View Code


  位运算: 

   

Python将英文字符后移三位_Python将英文字符后移三位_25




Python将英文字符后移三位_Code_03

Python将英文字符后移三位_ico_04

>>>bin(6)#将十进制数变成二进制
 '0b110'
>>>bin(5)
 '0b101'
>>>6 & 5 #每一位的二进制数相与,下面的同理
 4
>>>bin(4)
 '0b100'
>>>15 |4
 15
>>>15^4
 11
>>>~4   #相当于在数前面加符号后再减一,表里的有问题。
 -5
>>>4<<2  #100B=>10000B
 16
>>>4>>2   #100B=>1B
 1


View Code


   运算顺序:

  

Python将英文字符后移三位_Code_28