python 学习笔记

2020-03-21  本文已影响0人  入户锁门

python语言特点

Repetition is the mother of all learning重复是学习之母。
** 易于上手,难于精通。注重格式的语言,它的设计哲学:优雅、明确、简单。最主要的是开源。
不需要强制的分号,不需要强制的花括号,利用缩进(四个空格)来表示结构,python没有switch可以用字典或elif来替代。
常见错误提示:indentasionError就是错误的缩进引起的。
断行或续行\或()。

开发环境:IDE,集成开发环境

thonny,thonny.org下载
pycharm、
jupyter notebook、
vscod

变量与运算符

  1. 命名规则: 不能使用数字开头,可以使用字母、下划线
  1. 变量类型
    值类型(不可改变):int 、str、tuple(序列)
    字符串占位,%d,%s。
    字符串方法:find(),split(),join()

引用类型(可改变):list、set、dict
列表与元组:元组不可改变,列表可改变(重写)
列表的方法:增、删、改、查
python里没有真正意义上的常量,形式上的常量建议用大写字母来表示。
3.运算符
算术运算符:**乘方
赋值运算:没有自加(++)、自减(--)
关系(比较)运算:结果产生一个布尔值;列表或元组进行比较时,当一样多元素时比较后面的。
逻辑运算(and 与、or或 、not非):比较和结果都是bool类型的,int float类型0被认为是false,其它的非空被认为是true。
成员运算:in; not in
身份运算:is ; is not;isinstance;对象的三个特征:id,value,type
位运算符:把其他进制的数当作二进制的数运算。按位与& |

分支、循环、条件、枚举

表达式,是由运算符和操作数组成的序列
and 运算符优先级高于or,not > and >or, 同级运算从左到右执行(左结合),有赋值运算符(=)的是右结合,逻辑运算符优先级最低。
IDE (集成开发环境):pycharm、vscode、sublime,
使用IDE优势:智能感知;断点调试。

包、函数、循环、作用域

循环:while、for
while的条件不能是个常量,在递归条件下可以使用while。
for循环用于遍历或循环序列、集合或字典。end = ‘’不换行。continue终止一个然后继续。for in遍历。
rang()生成器,三个参数要以设置起始值和步长。

编程的追求:高性能、封装(可复用)、抽象

python是用包和模块组织它的项目的。
包,文件夹,必须包含一个init.py文件,可以批量导入,可以好好利用。
模块,文件
- 类 一个模块定义一个类
函数
变量

命名空间:包.模块,如seven.c6,在模块中可以定义和实例化类。
引入模块要注意:入口文件只可执行一次;避免循环导入

函数

round(number,digits),number是小数,digits要保留的位数,可以执行四舍五入。
作用:
1.功能性
2.隐藏细节
3.避免重复
文件IO
open(filename,mode)文件操作,mode分为r/w。
seek\close\write

定义
函数:def functionname(参数1,参数2),解释型语言先定义后调用,调用时直接用函数名(参数)的形式。
help(函数)查看内置函数
1.必须参数
2.关键字参数,在调用时明确把变量指定给哪个参数
3.默认参数,将默认值赋给形参。
调用

定义完之后要调用。
python之禅,import this
掌握好函数参数运用是学好函数的一个重要途径。

return返回值:

序列解包:给两个以上变量同时赋值,接收返回值时要用有意义的名称。
a = 1
b = 2
c = 3
a,b,c = 1,2,3
参数
形参、实参

面向对象

类(class)
定义
类是现实世界或思维世界中的实体在计算机中的反应。

类将数据和数据的操作封装在一起,包括行为(方法)与特征(数据成员),类的最基本作用就是封装代码。
封装变量、函数,一个模块里可以编写多个类,类里编写函数必须加一个参数self,类只负责去描述或刻画,不负责去执行,执行要放在类的外面。
类就像是一个模板,它可以产生很多个对象。

1.数据(变量)
局部变量不会覆盖全局变量,局部变量作用域就在函数内部。
global(全局变量)关键字。

2.方法(函数)
方法与函数区别:方法是设计方面的一个说法,是面向对象的一个概念;函数是面向过程的一概念。没必要严格区分。

作用

就是让你的模板生成不同的对象,初始化对象的特征,它是一个特殊的实例方法。
当你实例化一个对象时,它会自动调用你的构造函数。
一般是初始化对象的特征。

类实例化(对象)

实例化以后就是对象,一个类可以产生多个对象,类就像一个模板。
变量 =类名()

4.成员(变量和方法)的可见性
类变量的更改不应该通过直接访问该类的变量形式,而是通过方法来改变。
public公开的
private私有的,加双下划线__
python可以通过点的形式为实例动态添加一个新变量。

面向对象的三大特性

super关键字:可以指代父类,既可以调用构造函数也可以调用普通方法;子类方法可以与父类方法同名,优先调用子类的方法。

正则表达式与JSON 、xml

特殊的字符系列,帮助我们检测一个字符串是否与我们设定的相匹配,快速检索或替换文本,由元字符和普通字符表示。

import re导入模块

正则表达式的灵魂在于规则,常用于爬虫和数据处理。
元字符(概括字符集):“\d”表示数字,“\D”表示非数字;\w单词字符,\W非单词字符;\s空白字符,\S非空白字符。
字符集:[]出现在中括号里的字符是或关系,^表示取反操作。a-f,-表示范围。
匹配单词:[字母]{3,6},用花括号表示数量。默认是贪婪(尽量选择大数)模式。非贪婪模式,非贪婪模式是在数字后面加?问号。
数量界定:*匹配0次至无限多次+匹配1次至无数次;?匹配0次或1次。
边界匹配:首尾加上^ &;
括号():表示组,小括号内部表示且关系,只取括号内的字符。
第三个参数(flag):匹配模式分re.I(忽略大小写)、re.S(匹配所有符号),点号匹配除了换行符以外的所有符号。

内置函数:

JSON

一种轻量级数据交换格式,一种规则、规范,并不是一种语言。{字符串1:字符串2}象是字典,json数据是两种语言中的中间数据类型。
JSON VS 、xml,非常适合跨语言数据交换,也更适合移动开发。

python的高级语法与用法

枚举
本质上也是一个类,在 类下面定义一个个的常量。大写表示常量。
使用:from enum import enum
1.枚举优势:枚举下面的常量是不可以改变的,对常量有一个保护功能。
获取枚举值.value,名称.name
枚举可以用for循环遍历。
2.比较:不支持大小比较,可以等值比较,可以进行身份比较。
3.注意事项:枚举值是可以相同的,数值相等就相当于另一个别名。
可以用numbers.items()获取标签及值。
intenum可以强制限定枚举的值为数值型。

进阶 函数式编程

开发包和类库并不是所有人都需要,python 一切皆对象。

一般是命令式编程,python也是。

函数式编程,可以使你的代码更简洁。lisp语言是函数式编程的鼻祖。

函数可以赋值给一个变量,也可以作为另一个函数的参数。
过多的使用全局变量是一个非常糟糕的行为。

装饰器

time 模块,时间戳(总秒数)
开闭原则,对修改是封闭的,对扩展是开放的。体现AOP思想。
语法塘,用@符直接调用,作用是保持代码的完整性,保证调用时的简单。
装饰器参数(args,*kw)。
一个函数可以增加多个装饰器。
一类接口是开放的,一类是受保护的。
urllib内置库,request方法,实例方法要有个self参数。

爬虫

逐步进行数据精确化提取的过程

断点调试

必须要学会断点调试
vscode中按F5单行,F10下一行,F11进入某个函数内部
选择父级标签、闭合标签进行正则表达。
1.正则表达式进行数据筛选
2.数据精炼:strip()python内置函数,去除空格。
3.业务处理:sorted(参数,key=,reversed(倒序))python内置排序函数
rank,下标
两个网站:beautifulsoup、scrpy爬虫网站
注意:爬取数据时容易造成IP被封,只能用代理IP

代码规范化

杂记

上一篇 下一篇

猜你喜欢

热点阅读