一,变量
相信大家对于变量都不会很陌生吧,我们从小学解方程的时候的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
还有一些特别的赋值运算:
>>>a=1
>>>b=2
>>>a,b=b,a #交换两个数的值
>>>a
2
>>>b
1
>>>a,b=(5,6) #用元组进行赋值
>>>a,b=[55,99] #用列表进行赋值
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
运算顺序: