用python语言开发类似instagram网站的项目,写博客以整理思路形成系统的认知,加深印象和方便日后复习。
如发现问题,欢迎随时留言讨论。
本文主要介绍项目需要用到的python基础入门例子和一个小爬虫,python的系统理论知识不是本文重点。
基础知识
代码托管平台
- GitHub
- GitLab
- BitBucket
python手册
- 由于类库的关系,选择python2.7
- 在安装python的目录中可以找到。(…\Python27\Doc\python2713.chm)
pycharm中的一些快捷键
- Ctrl + / 行注释/取消行注释
- Ctrl + Alt + L 代码格式化
- Tab + Tab 缩进当前行 / Shift + Tab 不缩进当前行
内置函数
方法 | 作用 |
---|---|
max() | 最大值 |
min() | 最小值 |
len() | 序列长度 |
abs() | 绝对值 |
range() | 整数列表 |
dir() | 属性、方法列表 |
eval() | 执行一个字符串表达式,并返回表达式的值 |
chr() | ASCII -> 字符 |
ord() | 字符 -> ASCII |
divmod() | 包含、商和余数的元组 |
1 | x = 2 |
1 | x = 2 |
控制流
- if
- while
- for
- continue
- break
- pass 空语句,不做任何事情
例子:
0,1,2,3,4,6,7,8,9(跳过5):
1 | for i in range(0, 10): |
字符串
方法 | 作用 |
---|---|
capitalize() | 将字符串第一个字母变成大写,其它字母变成小写 |
replace() | 把字符串中的旧字符串替换为新字符串 |
lstrip() | 截掉字符串左边的空格或指定字符 |
startswith() | 字符串是否以指定子字符串开头 |
endswith() | 字符串是否以指定字符串结尾 |
len() | 字符串长度 |
join() | 以指定字符连接序列元素以形成新的字符串(list→string) |
split() | 以指定字符分割字符串(string→list) |
find() | 字符串是否包含子字符串 |
1 | stra = 'aaa' |
数据结构
列表–list[ ]
方法 | 作用 |
---|---|
extend() | 连接两个列表 |
in | 某个元素是否在列表中 |
+, * | 操作符重载 |
insert() | 在指定位置插入元素 |
pop() | 弹出指定位置元素,默认弹出最后元素 |
reverse() | 反转列表 |
sort() | 排序 |
代码演示:
1 | lista = [1, 2, 3] |
元组–tuple( )
元组和列表最大的区别在于:元组不能修改。
创建元组
创建元组很简单,只需要将元素用括号(可选)括起来,并使用逗号分隔符(即使只有一个元素)来分隔各个元素即可:
1 | # -- coding: utf-8 -- |
使用tuple函数
通过tuple函数可以将一个序列转换为元组。如下:
1 | # -- coding: utf-8 -- |
哪些地方需要使用元组
- 元组可以在映射(和集合的成员)中作为键(key)使用,而列表不行
- 元组作为很多内建函数和方法的返回值存在
字典–dict {k1:v1, k2:v2}
字典中的值没有特定顺序,每个值都对应于一个唯一的键。键可以是数字、字符串甚至是元组。即哈希结构(key: value)。
方法 | 作用 |
---|---|
get() | 返回指定键的值,如果键不存在则返回默认值None |
keys() | 以列表返回一个字典所有的键 |
values() | 以列表返回一个字典所有的值 |
has_key() | 字典是否包含某个键 |
items() | 遍历一个字典 |
pop() | 删除给定键所对应的值,返回值为被删除的值 |
del() | 删除元素 |
1 | dicta = {4: 16, 1: 1, 3: 9, 2: 4} |
集合–set([ ])
- set是一个无序不重复元素集
- 作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作
符号 | 作用 | |
---|---|---|
& | 交集 | |
intersection | 交集 | |
\ | 并集 | |
union | 并集 | |
- | 差集 |
1 | lista = [1, 2, 3] |
异常
Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。
- try
- except
- finally
捕捉异常
触发异常后,后面的代码就不会再执行
1 | try: |
- 输出
1
error: integer division or modulo by zero
clean up
raise
Python中的raise 关键字用于引发一个异常,基本上和Java中的throw关键字相同
1 | try: |
- 输出
error: (‘Raise Error’, ‘NowCoder’)
clean up
捕捉多个异常
1 | try: |
- 输出
除数不能为0
随机数
- 计算机的随机数都是伪随机
- 所谓“随机码”,就是无论这个码有多长都不会出现循环的现象,而“伪随机码”在码长达到一定程度时会从其第一位开始循环
方法 | 作用 |
---|---|
seed() | 改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数 |
random() | 返回[0,1)之间的浮点数。不能直接访问的,需要通过 random 静态对象调用该方法 |
randint(M,N) | 返回[M,N]的整数 |
choice() | 返回一个列表,元组或字符串的随机项 |
range() | 创建一个整数列表。range(10)不包含10。 |
shuffle() | 将序列的所有元素随机排序 |
1 | import random |
正则
符号 | 匹配 |
---|---|
\d | 数字 |
\D | 非数字 |
+ | 至少匹配1次 |
* | 至少匹配0次 |
方法 | 简介 | 作用 |
---|---|---|
re.compile() | 创建 | 根据包含正则表达式的字符串创建模式对象 |
模式.findall() | 匹配 | 以列表的形式返回能匹配的子串 |
1 | str = 'abc123def12gh15' |
实战
搭环境
使用python版本是2.7,IDE是PyCharm,版本管理工具是git
PyCharm需要进行简单的配置
在File>Settings>Version Control>GitHub里面进行设置项目地址,github账号
在File>Settings>Version Control>Git里面设置git.exe所在地址,一般在安装git路径的bin文件夹里面
pip安装包的命令pip install XXXX
简单抓取网页内容 c1_01.py
第一步
这里用到python的两个包,需要使用pip安装一下
pip install requests
pip install bs4
pip install BeautifulSoup
也可以使用PyCharm安装,在File>Settings>Project:XXX>Project Interpreter里面双击pip
第二步
然后直接在搜索框中输入包的名字
1 | #-*- encoding=UTF-8 -*- |
参考文章
总结