这些天跟着廖雪峰老师的python教程学习了一些知识,做一下笔记
1. Python简介
先根据我的理解简单介绍一下python。
特点:
- 基于C的高级语言;
- 功能强大;
- 面向对象;
- 代码量小;
- 运行效率不如C;
应用领域:
- 日常任务,脚本化机械重复的任务;
- 做网站,比如youtube;
- 网络游戏后台;
2. Hello World
讲一下我的安装和运行。更多方法可以自行搜索。
- 先从python官网下载python 3中适用自己开发环境的安装包。
- 安装时注意勾选
Add Python 3.5 to PATH
可以避免手动配置windows path的步骤。 - 这个时候已经可以在windows cmd界面查看python 版本号,以及在集成的idle中进行开发了。
- 为了方便开发,安装好用的python ide: pycharm
- 可以在官网申请到教育试用版
python编程一般分交互式环境和文本编辑器式。
在交互式环境中或者文本编辑器中(例如:notepad++)输入
print('hello world')
第一行pthon代码就完成了,运行试下。
3. 基本操作
3.1 输入输出
print()
输出变量或字符串' '
格式化字符串
%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
常见的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
input()
注意输入默认为字符串
>>> a = input()
1
>>> a
'1'#这里'1'为字符串
3.2 条件判断
if
后面接布尔值True(或者任意非空值) or False, 或者计算结果为布尔值的表达式2 > 3
if Ture:#or False, 注意':'初学很容易忘
pass
elif Ture:
pass
else:
pass
3.3 循环
for x in ...
循环能把...
中list或tuple中的每个元素迭代出来,这点能够简化工作和代码量。
例如
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
输出
Michael
Bob
Tracy
常用for x in range(i)
注意range(i, j, k)
生成从 i ~ j-1 的步长为 k 的整数序列
还有while
循环
4. 数据类型
4.1 基本类型
- 整数
int
- 浮点数
float
- 字符串
str
' '
或" "
表示- 转义字符
\
orr' '
- 布尔值
True
orFalse
- 空值
None
- 变量
- 常量 习惯用大写变量名
PI = 3.14159275
- 几种除法
/
结果为浮点数//
地板除,取结果的整数部分%
求余
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
4.2 字符串和编码
最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
把Unicode编码转化为“可变长编码”的UTF-8编码。
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
4.3 list, tuple, dict and set
list
['asdf', 1234, Ture, [12, 'aaa'], p, []]
len()
获取list元素个数l[-1]
指列表最后一个元素l.append()
添加元素到末尾l.pop(i)
删除i位置元素- 直接赋值替换该位置元素
tuple
有序列表元组,初始化后不能修改。(tuple中元素指向永远不变,内容可能改变)
('asdf', 1234, Ture, [12, 'aaa'], p, [])
# 定义空tuple
>>> t = ()
>>> t
()
# 定义只有元素'1'的tuple
>>> t = (1)
>>> t
1
# 定义只有一个元素的tuple
>>> t = (1,)
>>> t
(1,)
dict
dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。需要占用大量的内存,内存浪费多。用空间来换取时间的一种方法。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} # 注意',' ':'的写法
>>> d['Michael']
95
这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。
- 通过
in
判断key是否存在 - 通过dict提供的
get
方法,如果key不存在,可以返回None,或者自己指定的value
dict的key必须是不可变对象。因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
set
一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。set的原理和dict一样,所以,同样不可以放入可变对象
set可以看成数学意义上的无序和无重复元素的集合。
- 通过
add(key)
方法可以添加元素到set中。 - 通过
remove(key)
方法可以删除元素。
两个set可以做数学意义上的交集&
、并集|
等操作。
不变对象
str是不变对象,而list是可变对象。
对于可变对象,比如list,对list进行操作,list内部的内容是会变化的。
要始终牢记的是,a
是变量,而'abc'
才是字符串对象!有些时候,我们经常说,对象a
的内容是'abc'
,但其实是指,a
本身是一个变量,它指向的对象的内容才是'abc'
对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。