Python前端开发

1.前端三剑客(HTML,CSS和JavaScript)

1.1 HTML

1.1.1 HTML简介

HyperText Mark-up Language, 指的是超文本标记语言;

html是开发网页的语言;

html中的标签大多数都是成对出现的, 格式: <标签名></标签名>

1.1.2 HTML结构

第一行是文档声明部分

HTML:分为页头,页身和页脚。标签大部分是成对出现

1.1.3第一行文档声明部分HTML在vscode中的使用

vscode是由微软研发的一种代码编辑器;通过资源管理器打开可以创建html文档和编写HTML代码;可以根据需求安装插件

1.1.4常用的HTML标签初识

学习HTML语言就是学习标签的用法,常见的标签有20种;标签建议使用小写;

根据标签书写形式分为单标签和双标签;

单标签没有内容,双标签可以可以嵌套其他标签和承载文本内容

1.1.5资源路径

绝对路径和相对路径,一般使用相对路径;

相对路径是从当前操作的HTML文档所在,目录算起的路径;

绝对路径是从根目录算起的路径

1.1.6列表标签

列表标签有无序列表标签ul和有序列表标签ol

1.1.7表格标签

表格标签table、tr、th、td

1.1.8表单标签

表单标签是form标签

常用的表单标签有:lable、input、select

1.1.9表单提交

表单标签的作用就是可以把用户输入数据一起提交到web服务器

表单属性设置

​ action:是设置表单数据提交地址

​ method:是表单提交方式,提交方式有get,post

表单元素属性设置

​ name:表单元素的名称,用于作为提交表单数据时的参数名

​ value:表单元素的值,用于作为提交表单数据时参数名所代表的值

1.2 CSS

1.2.1 css简介

css 是层叠样式表,它是用来美化网页和控制页面布局

定义 css 的语法格式是: 选择器{样式规则}

1.2.2 css选择器

css 的引入有三种方式, 分别是行内式、内嵌式、外链式。

外链式是在公司开发的时候会使用,最能体现 div+css 的标签内容与显示样式分离的思想, 也最易改版维护,代码看起来也是最美观的一种。

1.2.3 css选择器
  • css 选择器就是用来选择标签设置样式的
  • 常用的 css 选择器有六种,分别是:
    1. 标签选择器
    2. 类选择器
    3. 层级选择器(后代选择器)
    4. id选择器
    5. 组选择器
    6. 伪类选择器
1.2.4 css属性
  • 设置不同的样式属性会呈现不同网页的显示效果
  • 样式属性的表现形式是: 属性名:属性值;
1.2.5 css 元素溢出
  • overflow样式属性是设置子标签溢出的显示方式
  • 常用使用**overflow:hidden;**来解决元素溢出
1.2.6 css显示特性

通常隐藏元素使用 display:none

1.2.7盒子模型
  • 盒子模型的5个主要样式属性

    • width:内容的宽度(不是盒子的宽度)
    • height:内容的高度(不是盒子的高度)
    • padding:内边距。
    • border:边框。
    • margin:外边距
  • 盒子的真实尺寸只会受到宽度、高度、边框、内边距四个属性的影响,不会受到外边距属性的影响。

1.3 JavaScript

前端开发三大块 1、HTML:负责网页结构 2、CSS:负责网页样式 3、JavaScript:负责网页行为, 比如:网页与用户的交互效果

1.3.1 JavaScript简介

JavaScript是运行在浏览器端的脚步语言, 是由浏览器解释执行的, 简称js, 它能够让网页和用户有交互功能, 增加良好的用户体验效果。

JavaScript是运行在浏览器端的脚步语言,它的作用就是负责网页和用户的交互效果。

1.3.2 JavaScript的使用方式
  • 行内式
  • 内嵌式
  • 外链式
1.3.3变量和数据类型

js中有六种数据类型,分别是:

  • number
  • string
  • boolean
  • undefined
  • null
  • object
1.3.4函数定义和调用
  • 函数的定义

      function 函数名(参数[参数可选]){  // 函数的代码实现  ...  }
    
  • 函数的调用

      函数名(参数[参数可选])
    
1.3.5变量作用域
  • 局部变量只能在函数内部使用
  • 全局变量可以在不同函数内使用
1.3.6条件语句

条件语句三种写法

  • if 语句 适用于单条件判断
  • if else 语句 适用于两种条件的判断(成立和不成立条件判断)。
  • if else if else 语句 适用于多条件判断
1.3.7获取标签元素

获取标签元素需要等待页面加载完成,使用document.getElementById(‘标签id’);

1.3.8操作标签元素属性

标签属性的获取和设置:

  1. var 标签对象 = document.getElementById(‘id名称’); -> 获取标签对象
  2. var 变量名 = 标签对象.属性名 -> 读取属性
  3. 标签对象.属性名 = 新属性值 -> 设置属性
1.3.9数组及操作方法
  • 数组的定义使用一对中括号
  • 获取数组的长度使用length属性
  • 从数组最后添加元素使用push方法
  • 从数组最后删除元素使用pop方法
  • 根据下标添加和删除元素使用splice方法
1.3.10循环语句

js中循环语句有:

  • for
  • while
  • do-while
1.3.11字符串拼接

"+" 运算符能够实现字符串的拼接操作

1.3.12定时器
  • 定时器的创建

    • 只执行一次函数的定时器, 对应的代码是setTimeout函数
    • 反复执行函数的定时器, 对应的代码是setInterval函数
  • 清除定时器
    • 清除只执行一次函数的定时器, 对应的代码是clearTimeout函数
    • 清除清除反复执行的定时器, 对应的代码是clearInterval函数

1.4 jQuery

1.4.1 jQuery简介
  • jQuery是一个免费、开源的JavaScript函数库
  • jQuery的作用和JavaScript一样,都是负责网页和用户的交互效果。
  • jQuery的优点就是兼容主流浏览器,代码编写更加简单。
1.4.2 jQuery用法
  • 引入jQuery

  • 获取标签元素需要在入口函数来完成,它的速度比原生的 window.onload 更快

  • jQuery入口函数有两种写法:

      // 完整写法$(document).ready(function(){...});// 简化写法$(function(){...});
    
1.4.3 jQuery选择器
  • jQuery选择器就是选择标签的
  • 标签选择器是根据标签名来选择标签
  • 类选择器是根据类名来选择标签
  • id选择器是根据id来选择标签
  • 层级选择器是根据层级关系来选择标签
  • 属性选择器是根据属性名来选择标签
1.4.4选择集过滤
  • 选择集过滤可以使用has方法和eq方法来完成
  • jquery给标签设置样式使用css方法
1.4.5选择集转移
  • prev() 表示获取上一个同级元素
  • prevAll() 表示获取上面所有同级元素
  • next() 表示获取下一个同级元素
  • nextAll() 表示获取下面所有同级元素
  • parent() 表示获取父元素
  • children() 表示获取所有的子元素
  • siblings() 表示获取其它同级元素
  • find(“选择器名称”) 表示获取指定选择器的元素
1.4.6获取和设置元素内容
  • 获取和设置元素的内容使用: html方法
  • 给指定元素追加html内容使用: append方法
1.4.7获取和设置元素属性
  • 获取和设置元素属性的操作可以通过prop方法来完成
  • 获取和设置元素的value属性可以通过val方法来完成,更加简单和方便
1.4.8 jQuery事件

jQuery常用事件:

  • click() 鼠标单击
  • blur() 元素失去焦点
  • focus() 元素获得焦点
  • mouseover() 鼠标进入(进入子元素也触发)
  • mouseout() 鼠标离开(离开子元素也触发)
  • ready() DOM加载完成
1.4.9事件代理
  • 事件代理就是使用父元素来代理子元素的事件,好处是减少事件的绑定次数,提高性能。
  • 使用场景当多个相同的子元素绑定同一个事件,可以使用事件代理。
  • 事件代理使用是使用delegate方法来完成

创建自定义javascript对象有两种方式:

  • Object
  • 字面量
1.4.10 jQuery对象

创建自定义javascript对象有两种方式:

  • Object
  • 字面量
1.4.11 json
  • json就是一个javascript对象表示法,json本质上是一个字符串。
  • json有两种格式:1. 对象格式, 2. 数组格式
1.4.12 Ajax
  • ajax 是发送http请求获取后台服务器数据的技术
  • ajax的简写方式可以使用.get和.get和.get和.post方法来完成

2. MySQL 数据库

2.1 MySQL数据库的基本使用

2.1.1数据库
  • 数据库就是存储和管理数据的一个仓库,是用来持久化存储和快速读取数据的。
  • 数据库可以分为关系型数据库非关系型数据库
2.1.2关系型数据库管理系统
  • 关系型数据库管理系统是一个软件,它可以管理不同的数据库,想要对数据库进行操作安装对应的关系型数据库管理系统软件即可。
  • SQL的作用是实现数据库客户端和数据库服务端之间的通信,好比是通信桥梁。
2.1.3 MySQL数据库
  • MySQL是一个关系型数据库管理系统
  • 安装MySQL服务端软件使用: sudo apt-get install mysql-server
  • 安装MySQL客户端软件使用: sudo apt-get install mysql-client
  • 图形化MySQL客户端软件使用Navicat
2.1.4数据类型和约束
  • 常用的数据类型:

    • 整数:int,bit
    • 小数:decimal
    • 字符串:varchar,char
    • 日期时间: date, time, datetime
    • 枚举类型(enum)
  • 常见的约束:
    • 主键约束 primary key
    • 非空约束 not null
    • 惟一约束 unique
    • 默认约束 default
    • 外键约束 foreign key
  • 数据类型和约束保证了表中数据的准确性和完整性
2.1.5图形化客户端Navicat
  • Navicat 是一个数据库图形化客户端软件,对数据库、数据表以及表中数据提供了非常方便、简单的操作
  • 在工作中为了提高开发效率往往会使用Navicat, 但是学习阶段为了夯实同学们的基础, 能够在面试和工作中在处理数据的时候得心应手, 我们使用命令行客户端的操作而不适用图形化工具。
2.1.6命令行客户端MySQL的使用
  • 登录数据库: mysql -uroot -p
  • 退出数据库: quit 或者 exit 或者 ctr + d
  • 创建数据库: create database 数据库名 charset=utf8;
  • 使用数据库: use 数据库名;
  • 删除数据库: drop database 数据库名;
  • 创建表: create table 表名(字段名 字段类型 约束, …);
  • 修改表-添加字段: alter table 表名 add 字段名 字段类型 约束
  • 修改表-修改字段类型: alter table 表名 modify 字段名 字段类型 约束
  • 修改表-修改字段名和字段类型: alter table 表名 change 原字段名 新字段名 字段类型 约束
  • 修改表-删除字段: alter table 表名 drop 字段名;
  • 删除表: drop table 表名;
  • 查询数据: select * from 表名; 或者 select 列1,列2,… from 表名;
  • 插入数据: insert into 表名 values (…) 或者 insert into 表名 (列1,…) values(值1,…)
  • 修改数据: update 表名 set 列1=值1,列2=值2… where 条件
  • 删除数据: delete from 表名 where 条件
2.1.7 as和distinct关键字
  • as 关键字可以给表中字段 或者 表名起别名
  • distinct 关键字可以去除重复数据行。
2.1.8 where条件查询
  • 常见的比较运算符有 >,<,>=,<=,!=
  • 逻辑运算符and表示多个条件同时成立则为真,or表示多个条件有一个成立则为真,not表示对条件取反
  • like和%结合使用表示任意多个任意字符,like和_结合使用表示一个任意字符
  • between-and限制连续性范围 in限制非连续性范围
  • 判断为空使用: is null
  • 判断非空使用: is not null
2.1.9排序
  1. 序使用 order by 关键字
  2. asc 表示升序
  3. desc 表示降序
2.1.10分页查询
  • 使用 limit 关键字可以限制数据显示数量,通过 limit 关键可以完成分页查询
  • limit 关键字后面的第一个参数是开始行索引(默认是0,不写就是0),第二个参数是查询条数

2.2MySQL数据库的条件查询

2.2.1聚合函数
  • count(col): 表示求指定列的总行数
  • max(col): 表示求指定列的最大值
  • min(col): 表示求指定列的最小值
  • sum(col): 表示求指定列的和
  • avg(col): 表示求指定列的平均值
2.2.2分组查询
  • roup by 根据指定的一个或者多个字段对数据进行分组
  • group_concat(字段名)函数是统计每个分组指定字段的信息集合
  • 聚合函数在和 group by 结合使用时, 聚合函数统计和计算的是每个分组的数据
  • having 是对分组数据进行条件过滤
  • with rollup在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
2.2.3连接查询–内连接
  • 内连接使用inner join … on …, on 表示两个表的连接查询条件
  • 内连接根据连接查询条件取出两个表的 “交集”
2.2.4连接查询–左查询
  • 左连接使用left join … on …, on 表示两个表的连接查询条件
  • 左连接以左表为主根据条件查询右表数据,右表数据不存在使用null值填充。
2.2.5连接查询–右连接
  • 右连接使用right join … on …, on 表示两个表的连接查询条件
  • 右连接以右表为主根据条件查询左表数据,左表数据不存在使用null值填充。
2.2.6连接查询–自连接
  • 自连接查询就是把一张表模拟成左右两张表,然后进行连表查询。
  • 自连接就是一种特殊的连接方式,连接的表还是本身这张表
2.2.7子查询

子查询是一个完整的SQL语句,子查询被嵌入到一对小括号里面

2.2.8数据库设计之三范式
  • 范式就是设计数据库的一些通用规范。

    • 1NF强调字段是最小单元,不可再分
    • 2NF强调在1NF基础上必须要有主键和非主键字段必须完全依赖于主键,也就是说 不能部分依赖
    • 3MF强调在2NF基础上 非主键字段必须直接依赖于主键,也就是说不能传递依赖(间接依赖)。
  • E-R模型由 实体、属性、实体之间的关系构成,主要用来描述数据库中表结构。
  • 开发流程是先画出E-R模型,然后根据三范式设计数据库中的表结构
2.2.9外键约束SQL语句的编写
  • 添加外键约束: alter table 从表 add foreign key(外键字段) references 主表(主键字段);
  • 删除外键约束: alter table 表名 drop foreign key 外键名;
2.2.10演练–分组和聚合函数的组合
-- 创建 "京东" 数据库
create database jing_dong charset=utf8;-- 使用 "京东" 数据库
use jing_dong;-- 创建一个商品goods数据表
create table goods(id int unsigned primary key auto_increment not null,name varchar(150) not null,cate_name varchar(40) not null,brand_name varchar(40) not null,price decimal(10,3) not null default 0,is_show bit not null default 1,is_saleoff bit not null default 0
);-- 向goods表中插入数据insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default);
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default);
insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default);
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default);
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default);
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default);
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default);
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default);
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default);
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default);
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default);
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default);
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default);
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default);
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

表结构说明:

  • id 表示主键 自增
  • name 表示商品名称
  • cate_name 表示分类名称
  • brand_name 表示品牌名称
  • price 表示价格
  • is_show 表示是否显示
  • is_saleoff 表示是否售完

2. SQL语句演练

  1. 查询类型cate_name为 ‘超极本’ 的商品名称、价格

     select name,price from goods where cate_name = '超级本';
    
  2. 显示商品的分类

     select cate_name from goods group by cate_name;
    
  3. 求所有电脑产品的平均价格,并且保留两位小数

     select round(avg(price),2) as avg_price from goods;
    
  4. 显示每种商品的平均价格

     select cate_name,avg(price) from goods group by cate_name;
    
  5. 查询每种类型的商品中 最贵、最便宜、平均价、数量

     select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name;
    
  6. 查询所有价格大于平均价格的商品,并且按价格降序排序

     select id,name,price from goods where price > (select round(avg(price),2) as avg_price from goods) order by price desc;
    

2.3MySQL数据库的高级使用

2.3.1将查询结果插入到其它表

想要完成表复制可以使用: insert into … select … SQL语句

2.3.2使用连接更新表某个字段

连接更新表中数据使用: update … join … 语句

2.3.3创建表并给某个字段添加数据

创建表并给字段插入数据使用: create table … select 语句

2.3.4修改goods表结构

修改表结构可以使用: alter table 语句,多个修改字段之间使用逗号分隔

2.3.5 pymysql的使用
  1. 导包

     import pymysql
    
  2. 创建连接对象

     pymysql.connect(参数列表)
    
  3. 获取游标对象

     cursor =conn.cursor()
    
  4. 执行SQL语句

     row_count = cursor.execute(sql)
    
  5. 获取查询结果集

     result = cursor.fetchall()
    
  6. 将修改操作提交到数据库

     conn.commit()
    
  7. 回滚数据

     conn.rollback()
    
  8. 关闭游标

     cursor.close()
    
  9. 关闭连接

     conn.close()
    
2.3.6事务
  1. 事务的特性:

    • 原子性: 强调事务中的多个操作时一个整体
    • 一致性: 强调数据库中不会保存不一致状态
    • 隔离性: 强调数据库中事务之间相互不可见
    • 持久性: 强调数据库能永久保存数据,一旦提交就不可撤销
  2. MySQL数据库默认采用自动提交(autocommit)模式, 也就是说修改数据(insert、update、delete)的操作会自动的触发事务,完成事务的提交或者回滚
  3. 开启事务使用 begin 或者 start transaction;
  4. 回滚事务使用 rollback;
  5. pymysql 里面的 conn.commit() 操作就是提交事务
  6. pymysql 里面的 conn.rollback() 操作就是回滚事务
2.3.7索引
  • 索引是加快数据库的查询速度的一种手段
  • 创建索引使用: alter table 表名 add index 索引名[可选] (字段名, xxx);
  • 删除索引使用: alter table 表名 drop index 索引名;

3.闭包和装饰器

3.1闭包

  1. 当返回的内部函数使用了外部函数的变量就形成了闭包

  2. 闭包可以对外部函数的变量进行保存

  3. 实现闭包的标准格式:

     # 外部函数def test1(a):b = 10# 内部函数def test2():# 内部函数使用了外部函数的变量或者参数print(a, b)# 返回内部函数, 这里返回的内部函数就是闭包实例return test2
    

3.2闭包的使用

闭包不仅可以保存外部函数的变量还可以提高代码的可重用行。

3.3修改闭包内使用的外部变量

修改闭包内使用的外部函数变量使用 nonlocal 关键字来完成

3.4装饰器

  • 装饰器本质上就是一个闭包函数,它可以对已有函数进行额外的功能扩展。

  • 装饰器的语法格式:

    # 装饰器
    # def decorator(fn): # fn:被装饰的目标函数.
    #     def inner():
    #         '''执行函数之前'''
    #         fn() # 执行被装饰的目标函数
    #         '''执行函数之后'''
    #     return inner
    
  • 装饰器的语法糖用法: @装饰器名称,同样可以完成对已有函数的装饰操作。

3.5装饰器的使用

在不改变已有函数源代码及调用方式的前提下,对已有函数进行功能的扩展

3.6通用装饰器的使用

通用装饰器的语法格式:

# 通用装饰器
def logging(fn):def inner(*args, **kwargs):print("--正在努力计算--")result = fn(*args, **kwargs)return resultreturn inner

3.7多个装饰器的使用

多个装饰器可以对函数进行多个功能的装饰,装饰顺序是由内到外的进行装饰

3.8带有参数的装饰器

使用带有参数的装饰器,其实是在装饰器外面又包裹了一个函数,使用该函数接收参数,返回是装饰器,因为 @ 符号需要配合装饰器实例使用

3.9类装饰器的使用

  • 想要让类的实例对象能够像函数一样进行调用,需要在类里面使用call方法,把类的实例变成可调用对象(callable)
  • 类装饰器装饰函数功能在call方法里面进行添加

4. mini_web框架

4.1 web框架概述

  • web框架是专门为web服务器处理动态资源请求的一个应用程序
  • web框架和web服务器的关系是web框架专门服务于web服务器,给web服务器提供处理动态资源请求的服务。

4.2框架程序开发

  • 动态资源的判断通过请求资源路径的后缀是.html来完成,否则是静态资源
  • 处理客户端的动态资源请求
    1. 接收web服务器的动态资源请求
    2. 处理动态资源请求并把处理结果返回给web服务器
    3. web服务器把处理结果组装成响应报文发送给浏览器

4.3模板替换功能开发

  1. 打开template目录下的index.html模板文件,读取模板文件数据
  2. 把模板文件中的模板变量进行替换

4.4路由列表功能开发

  • 路由是请求的URL到处理函数的映射
  • 路由列表是用来保存每一个设置好的路由
  • 用户的动态资源请求通过遍历路由列表找到对应的处理函数来完成。

4.5装饰器方式的添加路由

使用带有参数的装饰器对处理函数进行装饰,并完成路由的添加功能

4.6显示股票信息页面好开发

  • 根据sql语句查询股票信息
  • 使用查询数据替换模板变量

4.7个人中心数据接口的开发

web框架程序还可以开发数据接口,为客户端程序提供数据服务。

    1. 根据sql语句查询数据库
    1. 把数据转成json字符串返回
    1. 浏览器通过指定接口地址获取web框架提供的数据。

4.8 Ajax请求数据渲染中心实现

  • 根据用户请求返回个人中心空模板文件数据
  • 在个人中心模板文件添加ajax请求获取个人中心数据
  • 将个人中心数据在页面完成展示

4.9 logging日志

  • 记录python程序中日志信息使用 logging 包来完成
  • logging日志等级有5个:
    1. DEBUG
    2. INFO
    3. WARNING
    4. ERROR
    5. CRITICAL
  • 打印(记录)日志的函数有5个:
    1. logging.debug函数, 表示: 打印(记录)DEBUG级别的日志信息
    2. logging.info函数, 表示: 打印(记录)INFO级别的日志信息
    3. logging.warning函数, 表示: 打印(记录)WARNING级别的日志信息
    4. logging.error函数, 表示: 打印(记录)ERROR级别的日志信息
    5. logging.critical函数, 表示: 打印(记录)CRITICAL级别的日志信息

5. 正则表达式

5.1 property属性

  • 定义property属性有两种方式:

    1. 装饰器方式
    2. 类属性方式
  • 装饰器方式:
    1. @property 修饰获取值的方法
    2. @方法名.setter 修饰设置值的方法
  • 类属性方式:
    1. 类属性 = property(获取值方法, 设置值方法)

5.2 with语句和上下文管理器

  • Python 提供了 with 语句用于简化资源释放的操作,使用 with 语句操作建立在上下文管理器(实现__enter__和__exit__)的基础上
  • Python 还提供了一个 @contextmanager 装饰器,更进一步简化上下管理器的实现,让一个函数可以成为上下文管理器,结合 with 语句来使用

5.3生成器的创建方式

  • 生成器是根据算法生成数据的一种机制,每次调用生成器只生成一个值,可以节省大量内存。
  • 生成器的创建有两种方式:
      1. 生成器推导式
      1. yield 关键字

5.4深拷贝和浅拷贝

  • 浅拷贝使用copy.copy函数
  • 深拷贝使用copy.deepcopy函数
  • 不管是给对象进行深拷贝还是浅拷贝,只要拷贝成功就会开辟新的内存空间存储拷贝的对象。
  • 浅拷贝和深拷贝的区别是:
    • 浅拷贝最多拷贝对象的一层,深拷贝可能拷贝对象的多层。

5.5正则表达式概述

正则表达式是匹配符合某些规则的字符串数据

5.6 re模块介绍

re.match() 根据正则表达式从头开始匹配字符串数据

5.7匹配单个字符

  • . 表示匹配任意1个字符(除了\n)
  • 表示匹配[ ]中列举的1个字符
  • \d 表示匹配一个数字,即0-9
  • \D 表示匹配一个非数字,即不是数字
  • \s 表示匹配一个空白字符,即 空格,tab键
  • \S | 匹配一个非空白字符
  • \w | 匹配一个非特殊字符,即a-z、A-Z、0-9、_、汉字
  • \W | 匹配一个特殊字符,即非字母、非数字、非汉字

5.8匹配多个字符

  • *表示匹配前一个字符出现0次或者无限次,即可有可无
  • +表示匹配前一个字符出现1次或者无限次,即至少有1次
  • ?表示匹配前一个字符出现1次或者0次,即要么有1次,要么没有
  • {m}表示匹配前一个字符出现m次
  • {m,n}表示匹配前一个字符出现从m到n次

5.9匹配开头和结尾

  • ^ 表示匹配字符串开头
  • $ 表示匹配字符串结尾

5.10匹配分组

  • | 表示匹配左右任意一个表达式
  • (ab) 表示将括号中字符作为一个分组
  • \num 表示引用分组num匹配到的字符串
  • (?P<name>) 表示分组起别名
  • (?P=name) 表示引用别名为name分组匹配到的字符串
  • (分组数据):分组数是从左到右的方式进行分配的,最左边的是第一个分组,依次类推

Python前端开发相关推荐

  1. python前端开发招聘_web前端和python学哪个出来工资高?

    展开全部 题主的意图说得很明显了e68a84e8a2ad62616964757a686964616f31333433646436,就是为了更好的就业,获得一份不错的薪资.那么我们首先来看一下Pytho ...

  2. python 开发工具_一个极具意义的 Python 前端开发工具

    点击上方   编程学习者社区,选择 创建星标 回复关键字 资源  获取编程资源 Python作为胶水语言,真的是无所不能.这不,最近又出现一个基于Python3,目标是替代JavaScript的前端开 ...

  3. python前端开发招聘_[昆明] EMQX 招聘 Python ,前端开发工程师

    关于 EMQX EMQ X - 开源物联网 MQTT 消息中间件,具备百万级高并发.毫秒级低延时.分布式.高可用等特性: 招聘职位 Python/Golang 开发工程师(6k-12k/昆明) 本科及 ...

  4. python前端开发招聘_【天津前端开发招聘_最新天津前端开发招聘信息】-前程无忧...

    天津卓众信息技术有限公司天津-西青区0.6-1万/月11-23 学历要求:本科|工作经验:3-4年|公司性质:民营公司|公司规模:少于50人 1.根据产品设计实现产品的页面交互和数据逻辑展示,负责前端 ...

  5. python前端开发招聘_Python招聘需求与技能体系

    目前国内的招聘Python,基本都是偏向web后台开发,偶有高大上的数据挖掘&机器学习. 这是之前(2012年)找工作整理的一些JD,在梳理几年来的笔记,顺带理一理 可以以此建立自己的技能体系 ...

  6. python前端开发需要的工具_前端工程师都有用哪些比较靠谱的小工具?

    Wappalyzer 是一个用于识别网站使用的库和框架的工具.它也是一个 Chrome 插件,是目前为前端开发人员最有用的工具之一.下一次你想知道一个网站使用什么库,来创建一个特定的可视化功能,Wap ...

  7. 40岁的我,如何花10个月从英语教师转型Python前端开发工程师?

    这是作者40岁时,职业生涯从教师变为前端开发者的一篇文章.他没有相关的背景经验和学位,在有全职工作前提下,以目标为导向,自我驱动完成了编程的学习.编程潮正热的现在,或许你该提前看看这篇文章? 请看来自 ...

  8. python前端开发和后端开发工程师_一文看懂前端和后端开发

    作为一名开发者,你可能会想:2019 年最好的软件开发技术和编程语言会是什么?它们又是如何被应用在软件开发当中的?如果你在思考这个问题,那就来对地方了.这篇文章将对前端和后端开发技术做一个对比,先从基 ...

  9. python前端开发之准备开发环境(建议收藏)

    开发环境 创建虚拟环境 为什么要创建虚拟环境 安装`virtualenv` 创建虚拟环境 激活和关闭虚拟环境 使用pip包管理工具 安装包 查看pip版本 更新pip版本 显示所以安装包 升级包 卸载 ...

最新文章

  1. 一般筛法求素数+快速线性筛法求素数
  2. boost::format模块format的基本用法示例
  3. invalid currency could not be saved in AG3
  4. 利用 Node.js 实现 SAP Hana 数据库编程接口
  5. Linux SO_KEEPALIVE属性,心跳
  6. nginx开发(二)配置mp4文件在线播放
  7. Android 功耗(9)---MTK功耗基础知识
  8. mpandroidchart 设置x轴数据_Flowjo软件下的流式数据基本分析
  9. 原生JS实现登录功能,本地Cookie保存登录信息---【调用网易云API接口】---超详细讲解
  10. winform自定义日历控件
  11. 删除计算机用户时拒绝访问权限,如果打印机拒绝访问并且无法删除设备怎么办...
  12. 对应的服务器证书无效。控制台输入 showRequestInfo() 可以获取更详细信息
  13. 机房收费系统之思想性总结
  14. 运用黑白调整层抠图技法(勾头发)
  15. 数理逻辑4 -- 公理化集合论16
  16. 网页设计(六)——基于HTML+CSS框架的网页设计实例
  17. 12-integer-to-roman
  18. 用Python对天气预报的数据进行数据分析
  19. 网络工程师应该考什么证
  20. 编程之美-三盏灯的问题

热门文章

  1. 北京交通大学计算机学院 于剑,北京交通大学计算机与信息技术学院博导介绍:于剑...
  2. ASP.NET Core MVC中的两种404错误
  3. 后台管理界面-- 管理员管理[2]
  4. Foursquare: 如何构建我们的模型训练引擎(Model Training Engine)
  5. 云存储——FreakShare
  6. App性能优化(一)—— 启动优化,冷启动,热启动,温启动
  7. 去除有道云笔记总在最前的设置
  8. 零基础入门3D游戏建模师知识必备
  9. PPT之写好PPT的关键要素及流程
  10. 安卓学习日记——Vitamio框架