偏函数

当函数参数过多时, 使用偏函数可以固定掉函数的一些值,返回新函数,可以让函数调用更加简单

def add(x, y, z):
print “x = %s” %x
print “y = %s” %y
print “z = %s” %z

不指定参数
不指定参数时,默认从函数的第一个参数开始

add2 = functools.partial(add, 1)

add2(2,3)

x = 1, y =2 , z = 3
指定参数
指定哪些参数固定,固定参数必须后不能再有参数

add2 = functools.partial(add, z = 1)

add2(2,3)

x = 2, y =3 , z = 1
装饰器
05月17日05:58:20
函数式编程的一种方式,将函数作为参数传给装饰器,经过一些处理后返回函数; 执行一些额外的操作,而又不想改变函数本身时使用;

基本函数

def now():
print “2016-05-17”
无参数模式
import functools

def log(func):
@functools.wraps(func) #将函数name属性设置为func,解决依赖函数签名的代码报错
def wrapper(*args, **kwargs):
print “begin call %s” % func.name
return func(*args, **kwargs)
return wrapper

@log放在函数定义处,等于执行了now = log(now);

log()是一个decorator,返回一个函数,原来的now()函数仍然存在,只是现在同名的now变量指向了新的函数,于是调用now()将执行新函数,即在log()函数中返回的wrapper()函数。

带参数的装饰器
def log_t(text=”):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print “%s: %s” % (text, func.name)
return func(*args, **kwargs)
return wrapper
return decorator

@log_t(‘hello’) #注意此处使用的log_t()的结果,也就是decorator函数
def now():
print “2016-05-17”
python启动参数
05月13日08:54:51
import sys

启动参数列表 sys.argv
安监门户网站启动
05月04日01:56:40
ssh root@192.168.10.101
/etc/init.d/httpd start
启动httpd服务

sudo service httpd start
启动mysql

sudo service mysqld start
创建git仓库
05月03日03:15:17
如果需要让别人远程clone,则需要开通ssh协议,git是依赖于ssh

开通ssh服务

sudo systemctl enable sshd.service
clone远程仓库
git clone bigzhu@mygit:/home/git/hold.git
clone别名仓库
git clone ly@ly.highwe.net:/home/git/clkj.git
clone下来还是clkj文件夹 如果是初次向该服务器进行clone操作,clone完成后; 对于空仓库,add之后;初次push,需要指定push的origin master分支

git push origin master
创建仓库并初始化
git –bare init mon_tornado.git
require 路径
04月29日07:33:43
path以”/”开头,加载的是一个位于绝对路径的模块文件。
require(‘/home/marco/foo.js’) //将加载/home/marco/foo.js。
path以”./”开头,加载的是一个位于相对路径(跟当前执行脚本的位置相比)的模块文件。
require(‘./circle’) //将加载当前脚本同一目录的circle.js。
path不以”./”或”/”开头,加载的是一个默认提供的核心模块(位于Node的系统安装目录中),或者一个位于各级node_modules目录的已安装模块(全局安装或局部安装)。
脚本/home/user/projects/foo.js执行了require(‘bar.js’)命令,Node会依次搜索以下文件。

/usr/local/lib/node/bar.js –npm 全局安装的路径,一般为:gulp、webpack之类的工具包

/home/user/projects/node_modules/bar.js –npm 局部项目安装的路径,跟js文件在同一个目录下的node_module npm install –save-dev安装的node package

/home/user/node_modules/bar.js –当前用户目录下的node_module

/home/node_modules/bar.js –home目录下的node_module

/node_modules/bar.js –根目录下的node_module

不以”./”或”/”开头,而且是一个路径,
require(‘example-module/path/to/file’) //则将先找到example-module的位置,然后再以它为参数,找到后续路径。
如果指定的模块文件没有发现,Node会尝试为文件名添加.js、.json、.node后,再去搜索。.js件会以文本格式的JavaScript脚本文件解析,.json文件会以JSON格式的文本文件解析,.node文件会以编译后的二进制文件解析。
1.3 mygit
04月29日02:22:28
需要在内网主机上启动auto_update_host目录下的send_ip.py文件用来获取外网返回的内网IP; 在root权限下
es6 set
04月20日06:17:11
无重复值的数组 add(value):添加某个值,返回Set结构本身。 delete(value):删除某个值,返回一个布尔值,表示删除是否成功。 has(value):返回一个布尔值,表示该值是否为Set的成员。 clear():清除所有成员,没有返回值。

Array.from方法可以将Set结构转为数组。 数组去重

function dedupe(array) {
return Array.from(new Set(array));
}
es6对象
04月19日13:46:16
只写属性名,不写值,此时属性的值等于属性名所代表的变量;

var birth = ‘2000/01/01’;

var Person = {

name: ‘张三’,

//等同于birth: birth
birth,

// 等同于hello: function ()…
hello() { console.log(‘我的名字是’, this.name); }

};
字面量属性名为表达式

let obj = {
};
对象合并和clone Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)

Object.keys(obj) //返回所有key Object.values(obj) //返回所有value Object.entries(obj) //返回[key,value]

Rest解构赋值,对象的Rest解构赋值用于从一个对象取值,相当于将所有可遍历的、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。

let { x, y, …z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }}
扩展运算符(…)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

let z = { a: 3, b: 4 };
let n = { …z };
n // { a: 3, b: 4 }
es6函数
04月19日09:14:45
默认参数
function log(x, y = ‘World’) {
console.log(x, y);
}

log(‘Hello’) // Hello World
log(‘Hello’, ‘China’) // Hello China
log(‘Hello’, ”) // Hello
参数变量是默认声明的,所以在函数体中,不能用let或const再次声明。 默认参数必须为最后一个参数

默认的解构赋值

function m1({x = 0, y = 0} = {}) {
return [x, y];
}
数的length属性,表示未设置默认参数的个数。

作用域
如果函数A的参数默认值是函数B,由于函数的作用域是其声明时所在的作用域,那么函数B的作用域不是函数A,而是全局作用域。

可以将参数默认值设为undefined,表明这个参数是可以省略的。

如果默认参数传入了值,则默认参数=号后面的表达式不会被执行

rest参数
rest参数要放在最后一个参数 函数的length属性不包含rest参数 rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

function add(…values) {
let sum = 0;

for (var val of values) {
sum += val;
}

return sum;
}

add(2, 5, 3) // 10

扩展运算符
将一个数组转换为用逗号分隔的参数序列.

console.log(…[1, 2, 3])
列表相加

// ES6的写法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(…arr2);

// ES6的合并数组

[…arr1, …arr2, …arr3]
扩展运算符可以与解构赋值结合起来,用于生成数组。只能放在参数的最后一位。

const [first, …rest] = [1, 2, 3, 4, 5];
first // 1
rest // [2, 3, 4, 5]]

箭头函数=>
如果箭头函数直接返回一个对象,必须在对象外面加上括号。

var getTempItem = id => ({ id: id, name: “Temp” });
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象,在箭头函数中,它是固定的。 所有的内层函数都是箭头函数,都没有自己的this,所以它们的this其实都是最外层函数的this

函数绑定
函数绑定运算符是并排的两个双冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。 如果双冒号左边为空,右边是一个对象的方法,则等于将该方法绑定在该对象上面。 使用babel时报错了,暂时使用bind代替
es6数值处理
04月19日07:06:33
数值转换

Number.parseInt(‘12.34’) // 12
Number.parseFloat(‘123.45#’) // 123.45
Number.isInteger()用来判断一个值是否为整数;小数点后面为0时也表示整数 3.0 === 3

Math对象
Math.trunc方法用于去除一个数的小数部分,返回整数部分。而且还会自行将string转换为数值

Math.trunc(‘123.456’)
// 123
Math.sign方法用来判断一个数到底是正数、负数、还是零。

它会返回五种值。

参数为正数,返回+1; 参数为负数,返回-1; 参数为0,返回0; 参数为-0,返回-0; 其他值,返回NaN。

指数运算符

2 ** 2 // 4
2 ** 3 // 8
es6正则表达式
04月19日06:54:09
允许正则和修饰符共用

new RegExp(/abc/ig, ‘i’).flags
// “i”
es6操作字符串
04月19日06:39:06
遍历字符串
for (let codePoint of ‘foo’) {
console.log(codePoint)
}
// “f”
// “o”
// “o”

字符串指定位置元素
‘abc’.at(0)
// “a”
includes():返回布尔值,表示是否找到了参数字符串。 startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。 endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。 以上三个方法都支持第二个参数,表示开始搜索的位置。

字符串补全
repeat方法返回一个新字符串,表示将原字符串重复n次。 padStart用于头部补全,padEnd用于尾部补全。

‘x’.padStart(5, ‘ab’) // ‘ababx’
‘x’.padStart(4, ‘ab’) // ‘abax’

‘x’.padEnd(5, ‘ab’) // ‘xabab’
‘x’.padEnd(4, ‘ab’) // ‘xaba’
模板
使用“进行封装,使用({}代表占位;可以在){}中使用表达式

var x = 1;
var y = 2;

${x} + ${y} = ${x + y}
// “1 + 2 = 3”

${x} + ${y * 2} = ${x + y * 2}
// “1 + 4 = 5”

var obj = {x: 1, y: 2};
${obj.x + obj.y}
// 3
模板中调用函数

function fn() {
return “Hello World”;
}

foo ${fn()} bar
// foo Hello World bar

引用模板字符串本身

// 写法一
let str = ‘return ’ + ‘Hello ${name}!‘;
let func = new Function(‘name’, str);
func(‘Jack’) // “Hello Jack!”

// 写法二
let str = ‘(name) => Hello ${name}!‘;
let func = eval.call(null, str);
func(‘Jack’) // “Hello Jack!”

es7的转码规则
04月19日06:28:20

ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个

npminstallsavedevbabelpresetstage0 npm install –save-dev babel-preset-stage-1
npminstallsavedevbabelpresetstage2 npm install –save-dev babel-preset-stage-3

将这些规则加入.babelrc。

{
“presets”: [
“es2015”,
“react”,
“stage-2”
],
“plugins”: []
}
es6遍历字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值