0%

argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。

传入一个参数

我们先在桌面新建“arg学习”的文件夹,在该文件夹中新建demo.py文件,来看一个最简单的argsparse库的使用的例子。

1
2
3
4
5
6
7
8
9
10
import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个数字')
#type是要传入的参数的数据类型 help是该参数的提示信息
parser.add_argument('integers', type=str, help='传入的数字')

args = parser.parse_args()

#获得传入的参数
print(args)
阅读全文 »

我们来看一个 flask 视图函数示例:

1
2
3
4
5
6
7
8
from flask import Flask, request

app = Flask(__name__) # 注册一个app

@app.route('/test', methods=['post', 'get']) # '/test'是访问路径, methods指定了请求的方法
def test():
data = request.get_json()['data'] # 通过request获取传来的数据
return data # 对请求返回响应

注意:flask视图函数的返回值类型只能为:string, dict, tuple, Response instance, or WSGI callable。

我们用 requests 来向接口发起请求:

1
2
3
4
import requests

r = requests.post('127.0.0.1:8802/test', data={'data':'hello world'})
print(r.text) # 输出 hello world
阅读全文 »

1、模块说明

requests是使用Apache2 licensed 许可证的HTTP库。

用python编写。

比urllib2模块更简洁。

Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。

阅读全文 »

任务介绍

我们想要在百度图片下载几个明星的写真图片,首先想到的是爬虫,但是百度使用了js渲染,只有下拉滑动条后面的图片才会加载出来。因此,单纯使用爬虫无法完成任务。这时我们想到了web自动化测试工具selenium,它可以帮助我们下拉滑动条,还可以实现图片的自动搜索。接下来介绍一下selenium+BeautifulSoup+urllib完成这个任务的过程。


阅读全文 »

Pandas简介

1、Python Data Analysis Library 或 Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

2、数据结构:

  • Series: 一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
  • Time- Series: 以时间为索引的Series。
  • DataFrame: 二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
  • Panel : 三维的数组,可以理解为DataFrame的容器。

Pandas 有两种自己独有的基本数据结构。读者应该注意的是,它固然有着两种数据结构,因为它依然是 Python 的一个库,所以,Python 中有的数据类型在这里依然适用,也同样还可以使用类自己定义数据类型。只不过,Pandas 里面又定义了两种数据类型:Series 和 DataFrame,它们让数据操作更简单了。

阅读全文 »

Vue 生命周期函数 也叫 Vue 生命周期钩子,就是 Vue 实例在某一时间点自动执行的函数。具体如下:

  • beforeCreate : 创建Vue实例前的时候执行
  • created : 创建Vue实例完成后执行,完成了data数据的初始化
  • beforeMount : Vue实例开始渲染前执行
  • mounted : Vue实例渲染完成后执行
  • beforeUpdate : Vue实例修改前执行
  • updated : Vue实例修改完成后执行
  • beforeDestroy : Vue被销毁前执行
  • destroyed : Vue实例被销毁后执行
  • activated :组件激活时调用。该钩子在服务器端渲染期间不被调用
  • deactivated :组件停用时调用。该钩子在服务器端渲染期间不被调用
父组件与同步子组件加载顺序:

父组件 beforeCreate -> 父组件 created -> 父组件 beforeMount -> 子组件 beforeCreate -> 子组件 created -> 子组件 beforeMount -> 子组件 mounted -> 父组件 mounted。

父组件与异步子组件加载顺序:

父组件 beforeCreate -> 父组件 created -> 父组件 beforeMount -> 父组件 mounted -> 子组件 beforeCreate -> 子组件 created -> 子组件 beforeMount -> 子组件 mounted。

人工神经网络(ANN)

在介绍卷积神经网络之前,先来了解一下人工神经网络。

概念

人工神经网络(Artificial Neural Network,简称ANN ),以数学模型模拟神经元活动,是基于模仿大脑神经网络结构和功能而建立的一种信息处理系统。神经网络是一种运算模型,由大量的节点(或称“神经元”)和之间相互的联接构成。每个节点代表一种特定的输出函数,称为激励函数、激活函数(activation function)。每两个节点间的联接都代表一个对于通过该连接信号的加权值,称之为权重


结构

神经网络包含三层:输入层、隐含层(可以有多层)、输出层。

sWHm2d.png

  • Inputs:输入,输入的是向量
  • Weights:权重
  • Bias:偏置
  • Activationfunction:激活函数
阅读全文 »

通俗理解word2vec

Word2vec,是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词。训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系,该向量为神经网络之隐藏层。

这个模型是如何定义数据的输入和输出呢?一般分为CBOW(Continuous Bag-of-Words,词袋模型 )与Skip-Gram两种模型。CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。

阅读全文 »

计算属性computed

用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<div id="box">
<input type="text" v-model="message">
<p>{{changeMessage}}</p>
<p>{{changeName}}</p>
</div>


el: '#box',
data: {
message: '123',
name: 'Silence'
},
computed: {
// 这是属性
changeMessage() {
return this.message;
},
// 这是属性
changeName: {
get(){
return this.name;
},
set(val){
this.name = val;
}
}
},
概念
  • computed计算属性,当依赖的属性的值(data中声明过或者父组件传递的props中的数据)发生变化时触发更改,否则使用的是缓存中属性值;
  • computed中有两个方法get()set(),如果computed的属性值是函数,那么默认会走get方法,函数的返回值就是属性的属性值;
  • 可以通过自定义set方法来给计算属性赋值;
  • computed的计算属性需要映射到DOM上,否则无效,即计算属性须被模板使用;
  • 不支持异步,当computed内有异步操作时无效,无法监听数据的变化。
阅读全文 »

什么是防抖与节流

有这样一种应用场景,在滚动事件中做一个复杂取值计算或者频繁的触发一个事件,这是很影响性能并容易导致页面卡顿的,所以要合并多次请求,通过函数做一个精确操作。这时就会用到函数防抖或者函数节流。

  • 函数节流是:在固定的时间内触发事件,每隔n秒触发一次
  • 函数防抖是:当你频繁触发后,n秒内只执行一次

防抖

触发高频函数事件后,n秒内函数只能执行一次,如果在n秒内这个事件再次被触发的话,那么会重新计算时间。

实现:每次触发事件时都取消之前的延时调用方法,直到在规定时间内事件没有再被触发时执行事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function debounce(fn) {
let timeout = null; // 创建一个标记用来存放定时器的返回值
return function() {
clearTimeout(timeout); // 每当用户输入的时候把前一个 setTimeout clear 掉
timeout = setTimeout(() => { // 然后又创建一个新的 setTimeout, 这样就能保证输入字符后的 interval 间隔内如果还有字符输入的话,就不会执行 fn 函数
fn.apply(this, arguments);
}, 500);
};
}

function sayHi() {
console.log('防抖成功');
}
let box = document.getElementById('box')
box.addEventListener('click', debounce(sayHi))
阅读全文 »