Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
Python为编程人员提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池”(batteries included)。除了内置的库外,Python还有大量其他人开发的第三方库,供编程人员使用。
Python缺点:
- 运行速度慢,与C相比非常慢,因为Python是解释型语言,代码会在执行时一行一行地翻译成CPU能理解的机器码,这个过程很耗时。而C程序运行前直接编译成CPU能执行的机器码,所以非常快。
- 代码不能加密,要想发布Python程序,因为是解释型语言,就必须发布源码。对于编译型语言C,C只需要把编译后的机器码(xxx.exe文件)发布。(但也别高估自己代码的“价值”,现在有无数非常优秀的开源项目)
1.在Python中,等号 = 是赋值语句,可以把任何数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 123
print(a)
a = 'Python'
print(a)
这种变量本身类型不固定的语言称之为 动态语言,与之对应是静态语言。静态语言定义变量时必须声明变量的类型,如果赋值类型和声明的类型不一致时,就会报错。
2. / 除法计算结果为浮点数,即使两个整数正好整除,结果也是浮点数,例如
>>>9/3
3.0
还有一种除法是 // 称之为地板除,地板除的结果永远为整数,只取整数部分。
3.Python整数没有大小限制,浮点数也没有大小限制,但浮点数超出一定范围就直接表示为inf(无限大)。
4.list
list是一种有序集合,可以随时添加和删除其中的元素。
>>>name = ['Jack','Pony','Robin']
>>>name
['Jack','Pony','Robin']
len()函数可以得到list元素的个数,可以用索引来访问list每一个位置元素,索引从0开始且不能越界(与数组相似)。
最后一个元素索引为len(name)-1,也可以用-1访问,即name[-1]可获取最后一个元素,依次类推-2为倒数第二个、-3为倒数第三个....
追加元素到list尾部使用append方法,name.append('Jobs')。
插入到指定位置使用insert方法,name.insert(1,'Bill')
删除末尾元素使用pop()方法
删除指定位置元素,使用pop(i),i为索引位置
要把某个位置元素替换为其他元素,可以直接赋值给对应索引位置
list中的元素数据类型可以不相同,如:
>>>L = ['abc',123,True]
list中也可以包含list,如:
>>>s = ['python','java',['asp','php'],'scala']
>>>len(s)
4
如果想拿到php元素,可写s[2][1],可以看成二维数组。
5.tuple
另一个有序列表叫元组:tuple。tuple和list类似,但tuple一旦初始化就不能修改,所以没有append、insert方法,获取元素方法与list相同。
因为tuple不可变,所以代码安全。
如果可能,能用tuple代替list尽量用tuple
当定义tuple时,tuple元素就要被确定下来,如:
>>>t = (1,2)
>>>t
(1,2)
但tuple有一个陷阱,当定义只有一个元素的tuple时:
>>>t = (1)
>>>t
1
这样定义定义的不是tuple,而是1这个数。当只有一个元素的tuple定义时必须加一个逗号,消除歧义:
>>>t = (1,)
>>>t
(1,)
另外,其实存在一种“可变”tuple,当tuple中包含list时,list可变,所以表现tuple“可变”,如图:
当修改list的元素'A','B'为'X','Y'后,tuple变为:
tuple的所谓“不变”是指,tuple每个元素指向永远不变,但指向的list本身是可变的。
6.dict
Python内置了字典:dict,全称dictionary,在其他语言中也称map,使用key-value存储,具有极快的查找速度。
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值覆盖掉。
要删除一个key,使用pop(key)方法,对应的value也会从dict中删除。
相比于list,dict是一种用空间换时间的方法。
dict中的key是不可变对象,字符串、整数等都是不可变的,但list不能作为key,list是可变的。
7.set
与dict类似,是一组key的集合,但不存储value。
由于key不能重复,所以在set中没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>>s = set([1,2,3])
>>>s
{1,2,3}
重复元素在set中被自动过滤:
>>>s = set{[1,2,2,3,3,3]}
>>>s
{1,2,3}
add(key)用来添加元素到set中,若已经存在,则不会有效果。
remove(key)方法删除元素。
set在数学意义上可以看做无序、无重复元素集合。两个set可做交集、并集:
>>>s1 = set{[1,2,3]}
>>>s2 = set{[2,3,4]}
>>>s1 & s2
{2,3}
>>>s1 | s2
{1,2,3,4}
set同样无法放入可变对象,因为无法保证“不会有重复元素”。
8.对于不变对象,调用对象自身的任意方法,也不会改变该对象自身的内容,如:
>>>a = 'abc'
>>>b = a.replace('a','A')
>>>b
'Abc'
>>>a
'abc'
调用的replace方法作用在字符串对象'abc'上,这个方法没有改变字符串本身的内容,而是创建了一个新字符串'Abc'并返回。
9.数据类型检查可以用内置函数isinstance()实现,如检查x是否只为int或float:
if isinstance(x,(int,float)):
print('yes')
else:
print('no')
可用于对传入的参数类型进行检查。
10.Python中函数可以返回多个值,但其实返回的是一个tuple,而多个变量可以同时接收一个tuple,按位置赋给对应的值。
>>> def test():
... return 1,2
...
>>> c,d = test()
>>> c
1
>>> d
2
>>> print(test())
(1, 2)
>>> t = (1,2)
>>> a,b = t
>>> a
1
>>> b
2
参考来源:《Python3基础教程》廖雪峰