1. 简介
1.1 Python适合开发哪些类型的应用
- 首选是网络应用,包括网站、后台服务等等;
- 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;
- 另外就是把其他语言开发的程序再包装起来,方便使用。
1.2 Python的缺点
- 运行速度慢,和C程序相比非常慢,因为Python是解释型语言。
- 代码不能加密
2. 安装
2.1 安装Python 3.7
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。接下来安装的是3.7版本。
在Mac上安装Python
系统是OS X>=10.9,那么系统自带的Python版本是2.7。要安装最新的Python 3.7,有两个方法:
方法一:从Python官网下载Python 3.7的安装程序,双击运行并安装;
方法二:如果安装了Homebrew,直接通过命令brew install python3安装即可。
在Windows上安装Python
从Python的官方网站下载Python 3.7对应的64位安装程序或32位安装程序,然后,运行下载的EXE安装包:
特别要注意勾上Add Python 3.7 to PATH,然后点“Install Now”即可完成安装。
3.Python 基础
3.1 数据类型(五种)
- 整数、浮点数、字符串、布尔值、空
3.2 空
- 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
3.3 字符串
- Python允许用’’’…’’'的格式表示多行字符串
- 对于单个字符的编码,Python提供了**ord()**函数获取字符的整数表示,**chr()**函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
- 计算数组或str长度:len(arr)
3.4 占位符
print('Hello, %s' % 'world')
'Hello, world'
print('Hi, %s, you have $%d.' % ('Michael', 1000000))
'Hi, Michael, you have $1000000.'
占位符 | 替换内容 |
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
print('%3d-%03d' % (3, 1))
print('%.3f' % 3.1415926)
// 结果
3-001
3.142
%3d表示输出宽度为3的数字(右对齐)
print('%3d' % 3) 输出 3
3左边有两个空格
%03d表示宽度至少为3的数字,太短了用0来凑数
print('%03d' % 3)输出003
%.2d表示保留两位小数
print('%.2d' % 3)输出3.00
- 转义,用%%来表示一个%:
print('growth rate: %d %%' % 7)
'growth rate: 7 %'
3.5 列表list
- 长度:len(list)
- 转换成list:list(range(0,5))
- 获取倒数元素:倒数第一个classmates[-1]
倒数第二个classmates[-2] - 追加元素到末尾append(item):
list.append('Adam')
- list中追加元素到指定位置insert(index, item):
list = ['Michael', 'Bob', 'Tracy', 'Adam']
list.insert(1, 'Jack')
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
- 删除指定位置元素pop(index):会返回被删除的元素,删除末尾元素不需要传参
list = ['Michael', 'Bob', 'Tracy', 'Adam']
list.pop(1)
print(list)
['Michael', 'Tracy', 'Adam']
3.6 元组tuple
- tuple和list非常类似,但是tuple一旦初始化就不能修改(元素是对象除外)
- 不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
- 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
t = (1,)
3.7 条件判断
- 语法:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
- 示例:
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
3.8 输入input()
报错代码:
birth = input('birth: ')
if birth < 2000:
print('00前')
else:
print('00后')
输入1982,结果报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() > int()
这是因为 input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数。Python提供了int()函数来完成这件事情:
s = input('birth: ')
birth = int(s)
if birth < 2000:
print('00前')
else:
print('00后')
3.9 循环
- for…in循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
- while循环
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
break可以跳出循环
continue可以跳过当前的这次循环,直接开始下一次循环
3.10 生成整数数列range()
list(range(5))
[0, 1, 2, 3, 4]
3.11 字典dict
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
- key不可变,list不能作为key, key不存在会报错
- 要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:
>>> 'Thomas' in d
False
- 二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
- 注意:返回None的时候Python的交互环境不显示结果。
- 删除一个key: pop(key)
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
- 和list比较,dict有以下几个特点:
- dict查找和插入的速度极快,不会随着key的增加而变慢;
- dict需要占用大量的内存,内存浪费多。
- 而list相反:
- list查找和插入的时间随着元素的增加而增加;
- list占用空间小,浪费内存很少。
3.12 set
- set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
- 要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
- 重复元素在set中自动被过滤:
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
- 通过 add(key) 方法可以添加元素到set中,可以重复添加,但不会有效果:
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
- 通过 remove(key) 方法可以删除元素:
>>> s.remove(4)
>>> s
{1, 2, 3}
- set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
- set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。