python变量,字符编码与运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python变量,字符编码与运算相关的知识,希望对你有一定的参考价值。

一,变量

  相信大家对于变量都不会很陌生吧,我们从小学解方程的时候的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码。

技术分享

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

  

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

 

 

三,运算

  算数运算:

  技术分享

  

技术分享
>>>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

 

  比较运算:

  技术分享

技术分享
>>>3==3
 True
>>>4!=3
 True
>>>3<>4 #这个语法有问题。
>>>3>4
 False
>>>3<4
 True
>>>4>=3
 True
>>>4<=3
 False
View Code

 

  赋值运算:

  技术分享

技术分享
>>>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

   逻辑运算:

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

  技术分享

  什么是逻辑短路:

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

    同理or也会有。

技术分享
>>>‘‘ and 2 #第一个为空字符串,所以第一个是假,所以返回为第一个字符。
 ‘‘
>>> 3 or 0 #第一个为3,所以第一个是真,所以直接返回第一个。
 3
>>> not 3
 Flase
View Code

  成员运算:

  技术分享

技术分享
>>>3 in [3,5,6]
 True
>>>3 not in [3,5,6]
 False
View Code

   身份运算: 

  技术分享

技术分享
>>>a=3
>>>b=a
>>>id(a)
 1720525584
>>>id(b)
 1720525584
>>> b is a
 True
>>>b is not a
 False
View Code

  位运算: 

   技术分享

技术分享
>>>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变量,字符编码与运算的主要内容,如果未能解决你的问题,请参考以下文章

python变量赋值与运算符

Python 02.运算符和编码

python学习笔记

python入门,数据类型,字符编码,文件处理

python基础语法

二 Python 变量与字符编码