MODULE 0
走进python
hello world
1 | mystring = 'hello world' |
运行程序:(1)交互式解释器shell(2)文件(以.py为扩展名)
安装第三方库: pip install (库名)
输出:利用Print函数 参数为变量名or字符串
输入:Input函数 变量名 = 变量类型( input(‘提示语句’))
python风格
注释:#开头表示
换行:三引号下的数据可以不用加换行符号;
缩进:不需要括号,直接用冒号,然后控制缩进;
python语法基础
变量:标注对象or引用对象;变量名命名受C语言影响:首字母必须是字母or下划线;其余可以是字母、下划线、数字;大小写敏感;尽量避免下划线开头的变量名;尽量不使用拼音,使用英文;驼峰式、下划线式不混用;关键字不可用做变量名;
运算符有优先级顺序,表达式一定要有运算结果;
赋值:python是动态强类型语言,通过引用的方式赋值,无需显式声明变量类型;可用id()函数查看内存空间;[-5,256]范围内的数字可以存储在同一内存空间,方便使用;增量赋值,链式赋值,多重赋值;
1 | #多重赋值的本质是元组打包、序列解包 |
语句:用于完成一个任务;表达式:任务中的一步;
Python数据类型
(1)整型(int):Python中整型基本不存在溢出问题
(2)布尔型(bool):其实整型的一个子类,只有true\false两个值,本质上也是由1\0存储的
(3)浮点型(float):数学中的实数,用类似科学计数法表示
(4)复数型(complex):虚数部分用$j$标记,可以使用.real和.imag分别取得实数和复数部分,可以用.conjugate获得共轭复数
(5)字符串:可使用单引号、双引号和三引号(三个单引号)鉴别,三引号中可以自由使用单引号和双引号;可以使用索引操作符,可以使用+将两个字符串连接在一起;
(6)映射类型-字典:用大括号来鉴别,成员是有键和值成对的对象,类似于哈希表的键值对;
Python基本运算
(1)算术运算:+、-、、/、*(乘方运算)、%(取余)、//(整除)
(2)比较运算:Python可以使用连续的比较运算;>、<、==、!=;
(3)逻辑运算:not \ and \or (与C++中不一样,Python中可直接使用中文)
(4)字符运算符:r\R表示原始字符串,用于一些不需要转义自负的地方
比较运算和逻辑运算的结果为bool型的值;
Python的函数、模块
(1)函数:完成特定功能的一段代码;
内建函数:数值型内建函数、实用函数;可用help()查看某个内建函数的信息;
1 | round(),四舍五入取整;(内建函数) |
标准库函数(Python标准支持,需要倒入模块)、第三方库(需安装)、用户自定义(自行设计)
1 | import <模块名1><模块名2> |
包(Package)
1 | 一个有层次的文件目录结构; |
库(library)
1 | 一组模块集合 |
print可以支持同时输出多个变量;
1 | runfile(), |
MODULE 1
三种结构:顺序、选择、重复
条件
1 | if <条件表达式>: |
另外,还可以使用条件嵌套和条件返回式;
1 | x if <expression> else y |
range()函数:用于产生一组有规矩的数列
1 | range(start, end, step) |
循环
1 | while <expression>: |
for循环是一个语法糖:将复杂的语法规则内含化;
1 | #最大公约数 |
其它语句
1 | break:跳出当前循环,提前终止; |
素数的计算机定义:如果无法被2到sqrt(N)之间的数整除,则为素数
自定义函数
1 | def <函数名>(<参数>):#相比于C++,python中不用写出参数的数据类型 |
默认参数
(1)程序中若需要有默认参数,直接用赋值语句写出;
(2)默认参数可修改
1 | def f(x, y = True) |
(3)默认参数后面不允许跟上非默认参数,故默认参数一定要放到最后;
关键字参数
1 | def f(x,y): |
一旦使用了关键字参数,则所有的参数都需使用为关键字参数
传递函数
函数可以像参数一样传递给另外一个函数;
lambda函数(匿名函数)
1 | def my_add(x,y): return x+y |
递归
(1)递归一定要有停止条件
(2)递归的系统消耗更大,一层一层调用,一层一层返回
有些问题找不到合适的循环方案,则只有使用递归的方法
变量作用域
全局变量:位于代码的主题部分,函数内和主体部分都可见
局部变量:函数模块中的变量
若全局变量和局部变量同名,则遵循“内层屏蔽外层”的原则。函数内部也可修改全局变量的值。
1 | global a#声明a为一个全局变量 |
常用python标准库函数
可用dir(<模块名>)查看其中的函数
math模块
1 | import math |
os模块:与操作系统交互
1 | import os |
random模块:随机数生成
1 | import random |
datetime模块
1 | from datetime import date |
异常
错误分类:语法错误,运行时刻错误,逻辑错误
Python通常用异常对象表示异常;若无法捕捉异常对象,则会回溯找到异常出现点;
1 | dir(_builtins_)#查看异常类 |
1 | #try_except |
操作文件时一般推荐使用with语句;
MODULE 2 数据获取
本地数据获取
打开文件-读取数据-写入数据-关闭文件
1 | #使用open函数,文件名(包含路径信息),模式,大小(后两个参数是必须的) |
open()函数返回一个文件对象,文件对象可迭代,
1 | #对象名.方法 |
with语句在执行后会直接关闭文件,则无需继续使用close关闭文件;
python在读取文件时不会自动删除换行符;
读写时共用同一个文件指针,数据从指针所在位置开始读写;seek函数可移动指针解决上述问题:seek函数有两个参数,一个表示偏移量,一个表示起始位置(默认值为0);seek(5,0)表示从文件开头移动至5个位置处;
统计文件中的行数
1 | try: |
1 | path = '../data' |
网络数据获取
(1)抓取:urllib内建模块、Requests第三方库、Scrapy框架
(2)解析:BeautifulSoup库,re模块
Requests库:网页抓取
(查看爬虫协议:robots.txt,只有允许部分才可爬取)
1 | r = requests.get('<网站名>') |
动态生成的页面可能无法使用requests
网页数据解析
(1)Beautifulsoup库:适用于有标签标记的数据
1 | from bs4 import Beautifulsoup |
(2)re正则表达式模块处理:对于细则上比较复杂的数据提取
This is copyright.