学习笔记day1 python的认识
首先:python是一门动态解释性的强类型定义语言
Python的优缺点
先看优点
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
再看缺点:
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。
python的数据类型
1.数字(int,float,complex)
2.布尔值(真假或者0和1)
3.字符串(" "或者‘’符号包括的)
(1)字符串的格式化输出
例如
name = "bobo" print("Her name is %s"%name)
PS:整数是%d,字符串是%s,小数是%f
(2)字符串常用功能
移除空白
str.strip()
分割
str.spilt()
长度
len(str)
索引
str.index()
切片
str[0:n]
4. 列表
列表是有序的,可变的,可以进行增删改查。
创建列表:
name_list = ['lun', 'kun', 'bobo'] 或 name_list = list(['lun', 'kun', 'bobo'])
基本操作:
索引
name_list.index()
切片
name_list[0:]
追加
name_list.append('bo') 列表结尾增加 name_list.insert(0,'amei')第一个参数为索引,第二个为增加的数据
删除
name_list.pop()删除列表末尾的数据 del name_list[0]直接删除对应数据 name_list.clear()清除全部列表数据,剩下一个空列表
name_list.remove('lun')移除和参数相同的数据
长度
len(name_list)
切片
name_list[0:-1] -1代表列表末尾数据切掉
循环
for i in name_list:依次输出列表中的数据并且换行 print(i)
包含
name_list.count('bobo')找出和参数一致的数据并计数
5.元组
元组和列表差不多,只是创建了就不能更改。只能进行查找。
6.字典
存储数据是用键值对进行存储数据。key:value
字典的特性是:无序的,键唯一。字典中的键必须是可哈希的,意思就是不可变类型,比如整型,字符串,元组等;字典和列表还有集合不能为字典的键。
7.集合
集合是无序的,不重复的。集合可用来消除重复。
集合的作用
- 消除重复
s = set((1,3,4,5,4)) print(s) 结果是:{1, 3, 4, 5}
- 进行集的运算比如 | & - ^
集合分类
- 可变集合就是通过s=set()进行创建
- 不可变集合 s =frozenset()
集合操作
集合的创建。
s = set((1,2,3))
集合的访问
s = set((1,3,4,5,4)) for i in s: print(i)
in notin
s = set((1,3,4,5,4)) print(1 in s)
集合更新
s = set((0,8,2,1)) s.add('bobo') print(s) 结果:{0, 8, 2, 'bobo', 1}
s = set((0,8,2,1)) s.update('kun','bobo',[1,3,4],(11,33)) print(s) 结果:{0, 'u', 2, 1, 3, 4, 33, 'n', 8, 'b', 11, 'k', 'o'} 注:update中的参数必须是可迭代的
del 删除集合本身
集合类型操作符
- in notin
- 集合等价与不等价 == !=
-
s.issubset(t) s <= t 测试是否 s 中的每一个元素都在 t 中 s.issuperset(t) s >= t 测试是否 t 中的每一个元素都在 s 中 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t) s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t) s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy() 返回 set “s”的一个浅复制