最近复习一下Python,做一些简单记录
Python的简单介绍
Python介绍
Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
语言特点
编程语言这么多,我们为什么要学习Python?
- 语法简洁
- 跨平台
- 可扩展
- 开放源码
- 类库丰富
发展历史
- 1990年Python诞生
- 2000年Python2.0发布
- 2008年Python3.0发布
- 2010年Python2.7发布,这也是最后一个Python2.x版本
我们在此直接学习Python3.x版本
环境安装
python安装
https://www.python.org/downloads/
Pycharm安装
https://www.jetbrains.com/pycharm/download/
Python编程利器
- python官方文档
- iPython
- jupyter notebook
- sublime text/VSCode
- Pycharm
- pip
Python 语法介绍
Python以缩进实现语法规范
Hello world
首先以Hello world开始我们的Python学习过程
1 | print("Hello world") |
输出函数
Python最常用print函数进行输出
1 | print("I like Python!") |
输入函数
Python最常用input()函数进行输入,但注意所有默认输入类型均为字符串类型,可利用强制类型转换实现所需要的类型输入
1 | a=input() |
Python注释
Python注释以#号开始,#后的语句不执行,常用于程序介绍
1 | #这是一条Python注释 |
导入模块
导入已经实现的可以直接使用的模块
1 | import time |
基础数据类型
- 整数(int)
- 浮点数(float)
- 字符串(str)
- 布尔值(bool)
可用过type()函数来查看数据类型
1 | print(type(8)) |
强制类型转换
Python可通过相应的类型函数进行类型转换
1 | int(8.0) #将浮点型转换为整型 |
变量的定义与赋值
Python可以直接进行变量定义,无须变量类型说明,可以直接使用=为变量命名
1 | a=8 |
变量命名规则
推荐驼峰命名法
基本运算
Python支持常见的数据运算,如加减乘除等,可直接进行变量间的运算
1 | 3+2 #加法运算,结果为5 |
序列数据类型
字符串
字符串是最常用的数据类型,常用单引号和双引号标识,按需决定用单引号还是使用双引号,字符串可根据下标进行索引或切片
1 | s="我是一个字符串" |
字符串常用操作
字符串有很强大的函数支持,这里只列举最常用的功能,其它的不再一一列举,有需要查询文档即可
成员关系操作符
in 和 not in 常用来判断成员关系
1 | a="123" |
连接操作符
+ 常用来进行字符串的连接
1 | a="123" |
重复操作符
*常用来进行字符串的重复
1 | a="123" |
切片操作符
[:]常用来进行切片操作
1 | a="12345" |
列表
列表也是很常用的数据结果,以方括号进行标识
1 | a=[1,2,3,4,5] |
列表常用操作
这里只列举最基本的添加与删除用法,其他的自行查询即可
添加元素
1 | a=[1,2,3,4,5] |
删除元素
1 | a=[1,2,3,4,5] |
元组
其实元组不太常用,我一般会用列表代替,元组以圆括号标识,注意元组的元素不可更改
1 | a=(1,2,3) |
顺序语句
上述所说的一条条的从上到下的属于顺序语句
1 | a=1 |
条件语句
Python使用if elif else 来进行条件语句的标识
1 | a=2 |
循环语句
Python常用while和for循环语句,下面依次介
绍
where 循环语句
1 | a=10 |
for 循环语句
for 语句可以直接循环元素,也可以循环索引
1 | #循环元素 |
1 | #循环索引 |
break打破循环
可以直接使用break中止循环
1 | for i in range(0,10): |
字典数据类型
字典的典型特点就是键值对,以花括号标识
1 | user={ |
列表推导式
1 | alist=[] |
等同于
1 | alist=[i*i for i in range(1,11) if(i%2)==0] |
字典推导式
1 | dic={'123':123,'456':456} |
等同于
1 | dic={key:0 for key in dic} |
文件操作
打开文件
Python使用open()来打开文件
模式:读取为r(read),写入为w(write),追加为a(add)
记住使用完及时关闭文件
1 | f=open('example.txt','w') |
关闭文件
Python使用close()来关闭文件
记住使用完及时关闭文件
1 | f=open('example.txt','w') |
输出
Python使用write()来进行输出
1 | f=open('example.txt','w') |
输入
Python使用read()来进行输入
1 | f=open('example.txt','r') |
输入一行
Python使用readline()来进行单行输入
1 | f=open('example.txt','r') |
输入多行
Python使用readlines()来进行多行输入
1 | f=open('example.txt','r') |
查看文件指针位置
1 | f=open('example.txt','r') |
文件内移动
Python使用seek()来进行文件内移动
f.seek(len,status)
- len为偏移的长度
- status为偏移起始位置,0为从文件开头偏移,1为从当前位置偏移,2位从文件结尾偏移
1
2
3f=open('example.txt','r')
f.seek(0) #文件指向相对位置,0ji开头
f.seek(5,0)异常处理
Python使用try except Exception[,reason] finally 来捕获异常也可以使用raise主动引发异常1
2
3
4
5
6
7
8a=3
b=0
try:
print(a/b)
except ZeroDivisionError as e:
print("除数无法为0",e)
finally:
print("程序执行完成")1
2
3
4try:
raise NameError('helloError')
except NameError:
print("my custom error")
函数
函数定义
Python中使用def来进行函数定义
1 | def 函数名(必选参数列表,*可选参数): |
在函数中可以用global 声明为全局变量
迭代器函数
1 | list1=[1,2,3] |
生成器函数
1 | def frange(start,stop,step): |
lambda表达式
简单函数可以转化为lambda表达式
1 | def add(x,y): |
等同于
1 | lambda x,y:x+y |
内建函数
filter()
1 | a=(1,3,5,7) |
map()
1 | a=[1,2,3] |
reduce()
1 | from functools import reduce |
zip()
1 | zip((1,2,3),(4,5,6)) |
闭包
闭包可以优化函数使用
1 | def sum(a): |
要区分函数的调用和引用
装饰器
装饰器通常用@来进行标识
不传参数
1 | import time |
带参数
1 | def tips(argv): |
上下文管理器
1 | with open('name.txt') as f: |
模块
1 | import module_name as new_name |
PEP8编码规范
https://www.python.org/dev/peps/pep-0008/
1 | pip install autopep8 |
类与实例
开始由面向过程的编程方法转向面向对象的编程方法
demo
1 | class Player(): |
类的继承
基本概念
- 父类与子类
- 继承与多态
- 属性与方法
所有类都继承自object父类,可以用type查看类的类型,用isinstance进行判断
1 | class Monster(): |
类与with结合
可减少异常处理机制的复杂性
1 | class Testwith: |
多线程编程
每运行一个程序,会形成一个进程
demo1
1 | import threading |
demo2
1 | import threading |
消费者与生产者问题
1 | from threading import Thread,current_thread |
标准库定义
https://docs.python.org/3/library/index.html
常用模块介绍
正则表达式
元字符
1 | . 匹配任意的单个字符 |
match()
match要求需要知道完整的模式,需要完全匹配
demo1
1 | import re |
demo2
1 | import re |
research()
research是模糊匹配,实现的实际是搜索功能
demo3
1 | import re |
sub()
sub可以实现替换的功能
demo4
1 | import re |
findall()
1 | import re |
时间和日期
time模块
1 | import time |
datatime
1 | import datetime |
数学相关库
math
1 | import math |
random
1 | import random |
文件与文件夹操作
os
1 | import os |
pathlib
1 | from pathlib import Path |
科学计算与机器学习
numpy
1 | import numpy as np |
pandas
Series
1 | from pandas import Series,DataFrame |
DataFrame
1 | from pandas import Series,DataFrame |
matplotlib
1 | import matplotlib.pyplot as plt |
读取文件绘图
1 | import matplotlib.pyplot as plt |
seaborn
1 | import matplotlib.pyplot as plt |
1 | import matplotlib.pyplot as plt |
tensorflow
网络数据采集
urllib
简单记一下吧,我一般不用这个,我会选择直接用requests库
demo
1 | from urllib import request |
GET 与POST 请求方式测试
1 | from urllib import request |
超时连接
1 | from urllib import request |
请求头部伪造
1 | from urllib import parse |
requests
好东西,我喜欢用,Web选手必备技能
1 | import requests |
正则+requests爬取网络图片
1 | import requests |
BeautifulSoup
基本用法
1 | from bs4 import BeautifulSoup |
爬取网络图片
1 | from bs4 import BeautifulSoup |
本文链接: https://yd0ng.github.io/2020/02/11/Python%E7%BC%96%E7%A8%8B%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!