赋值

python基础知识之函数与函数式编程

允我心安 提交于 2020-04-08 12:25:21
3种编程方式:   1.面向对象(最火的)。(过去大部分的编程方式);》》主要是依靠:类》》class ,就是具有逻辑的过程,说话的方式描述   2.面向过程。主要是 过程》》def 过程是没有返回值的函数,但是python也会返回none 基本与函数式编程没有区别了,最小的单元是一个一个的def定义的过程,一个一个逻辑是def定义的过程   3.函数式编程。编的函数更接近数学中的函数 是一种编程规范 也就是如何编程的方法论 主要是 函数》》def 例如lisp #hashshell erlang# 三种语言 可以 真正较纯粹的使用函数式编程来编写程序。 示例:(1+2)*3-4 传统编程方法:var a =1+2;        var b =1*3;        var c =b-4; 函数式编程则要求使用函数进行,把不同的运算定义成不同函数进行计算,写成下面的形式来进行: var result = subtract(multiplely(add(1,2),3),4); python中的函数式编程是:逻辑结构化和过程化的一种编程方法 一,函数基础介绍(day3 22)【funt_test.PY】 def func1():#函数 '''文档介绍''' print('in the func1')#过程 return 0#返回值 def func2():#过程 '''文档介绍'''

DOS命令

谁说胖子不能爱 提交于 2020-04-08 07:25:03
DOS命令    DOS命令 ,是DOS操作系统的命令,是一种 面向磁盘的操作命令 ,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。DOS命令 不区分大小写 ,比如C盘的Program Files,在dos命令中完全可以用"progra~1"代替, 加上英文引号是因为名称的中间有空格(即多于一个词) 。 . 代表当前文件夹 , .. 代表上层目录 ,如命令 cd .. 就是回到上层目录。文件夹是不能通过命令行(只能打开某个文件)打开的,因为它下边还有子目录,命令行只会进入到它的下级目录里。 DOS常用命令: cls   清屏 cd    改变当前目录        edit   文本编辑 dir    列文件名 ren    改变文件名 move   移动文件,改目录名 copy  拷贝文件          del    删除文件 md   建立子目录 rd    删除目录 deltree  删除目录树  tree    显示命令树结构      type   显示文件内容 more  分屏显示 attrib  设置文件属性 mem   查看内存状况        date   显示及修改日期 time   显示及修改时间 set    设置环境变量 debug   程序调试命令 shutdown   关机 ping    查看网络连通情况 diskcopy

谈谈神秘的ES6——(五)解构赋值【对象篇】

China☆狼群 提交于 2020-04-07 11:29:26
上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb" 对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。 let { bar, foo } = { foo: "aaa", bar: "bbb" }; foo // "aaa" bar // "bbb" let { baz } = { foo: "aaa", bar: "bbb" }; baz // undefined 上面代码的第一个例子,等号左边的两个变量的次序,与等号右边两个同名属性的次序不一致,但是对取值完全没有影响。第二个例子的变量没有对应的同名属性,导致取不到值,最后等于undefined。 如果变量名与属性名不一致,必须写成下面这样。 let { foo: baz } = { foo: 'aaa', bar: 'bbb' }; baz // "aaa" let obj = { first: 'hello', last: 'world' }; let { first: f, last: l } = obj; f

谈谈神秘的ES6——(四)解构赋值【数组篇】

柔情痞子 提交于 2020-04-07 10:56:33
今天,我们来讲一个新的概念,叫做解构赋值。那么在ES6中,什么是解构赋值呢?我们先来给它下个定义。 在ES6中,允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。满足解构赋值的前提是:1.等号两边结构一样;2.声明和赋值不能分开;3.右边是具体的“东西”。 在ES5的时候,我们想要对a,b,c三个变量赋值,一般来说都是var三个变量,写三行赋值。有了解构,它可以变成这个样子: let [a,b,c] = [1,2,3] console.log(a);//1 console.log(b);//2 console.log(c);//3 当然,以下的写法也是允许的: let [[arr],str] = [["arr"],"str"]; let [ , , third] = ["foo", "bar", "baz"]; console.log(third) // "baz" let [x, , y] = [1, 2, 3]; console.log(x) // 1 console.log(y) // 3 let [head, ...tail] = [1, 2, 3, 4]; console.log(head) // 1 console.log(tail) // [2, 3, 4] 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同

十六、mysql 变量

自古美人都是妖i 提交于 2020-04-07 10:04:39
1、系统变量   1) 全局变量   2) 会话变量 2、自定义变量   1) 用户变量   2) 局部变量 一、系统变量   说明:变量由系统提供,不是用户定义,属于服务器层面   注意:如果是全局级别,则需要加 global, 如果是会话级别,则需要家 session, 如果不写,则默认 session 。   使用的语法:     1) 查看所有的系统变量       show global|session variables;     2) 查看满足条件的部分系统变量       show global|session variables like ‘%char%’     3) 查看指定的某个系统变量的值       select @@global|session. 系统变量名     4) 为某个系统变量赋值       a. set global|session. 系统变量名=值       b. set @@global|session. 系统变量名=值 二、自定义变量   说明:变量是用户自定义的,不是系统的   使用步骤:声明、赋值、使用(查看、比较、运算等)   1、用户变量     (1) 作用域:针对于当前会话(连接)有效,同于会话变量的作用域     (2) 声明并初始化(赋值的操作符: = 或 := )       a. set @用户变量名=值;  

浅谈js中a+++a与a+a++值区别

戏子无情 提交于 2020-04-07 07:22:50
1.a++与++a区别 (1).a++是先运算再赋值自增,用旧值(未自增的值)计算,也就是输出旧值 (2).++a是先自增赋值再运算,用新值(自增后的值)计算,也就是输出新值。 2.由于后置等增运算符优先级高于前置递增运算符,a+++a等价于(a++)+a,先直接将a的旧值进行计算,然后a再自增赋值给后面的a值。 3.由于后置运算符优先于加法,a+a++等价于a+(a++),先将a值直接带入,而后面的a++,先自增再赋值运算。 4.运算机制 + / \ / \ a a++ 编译器的处理过程: 1. push(a), a入栈(1) 2. push(a++),即push(1),之后 a自增变成2 3. result = pop()+pop(), 出栈两个操作数(1,1)相加,得到2 + / \ / \ a++ a 编译器的处理过程: 1. push(a++), 即push(1),之后 a自增变成2 2. push(a),即push(2) 3. result = pop()+pop(), 出栈两个操作数(1,2)相加,得到3参考资料:https://blog.csdn.net/Lazy_Life/article/details/81214249 https://xiedaimala.com/tasks/94aebfab-e93d-403c-99c1-27f68ffede22

JavaScript之闭包

梦想的初衷 提交于 2020-04-06 20:50:16
很多小伙伴估计都会面试遇到被问JavaScript的闭包是什么。 在我们谈闭包之前,我们先来谈谈JavaScript的垃圾回收机制。 JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。 而在 C 和 C++之类的语言中,开发人员的一项基本任务就是手工跟踪内存的使用情况,这是造成许多问 题的一个根源。在编写 JavaScript 程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无 用内存的回收完全实现了自动管理。 这种垃圾收集机制的原理其实很简单:找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性地执行这一操作。 我们来分析一下函数中局部变量的正常生命周期。局部变量只在函数执行的过程中存在。而在这个过程中,会为局部变量在栈(或堆)内存上分配相应的空间,以便存储它们的值。然后在函数中使用这些变量,直至函数执行结束。此时,局部变量就没有存在的必要了,因此可以释放它们的内存以供将来使用。在这种情况下,很容易判断变量是否还有存在的必要;但并非所有情况下都这么容易就能得出结论。垃圾收集器必须跟踪哪个变量有用哪个变量没用,对于不再有用的变量打上标记,以备将来收回其占用的内存。用于标识无用变量的策略可能会因实现而异,但具体到浏览器中的实现,则通常有两个策略: 标记清除

浅谈浏览器垃圾回收机制

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-06 12:38:30
javaScriipt 使用垃圾回收机制来自动管理内存 js 的回收机制目前分为两种方式:1.标记清除(各大浏览器主流算法)2.引用技术   一: 标记清除     这种算法的思想是给当前不使用的值加上标记,然后再回收其内存     算法流程:       1.浏览器再运行的时候会给存储再内存中的所有变量都加上标记       2.去掉环境中的变量以及被环境中引用的变量的标记       3.如果还有变量有标记,就会被视为准备删除的变量       4.垃圾回收机制完成内存的清除工作,销毁那些带标记的变量,并回收他们所占用的内存空间   二:引用计数     这种算法的思想是跟踪记录所有值被引用的次数。javaScript 引擎目前都不再使用这种算法,但再IE 中访问非原生JavaScriopt 对象(如DOM元素)时,这种算法任然可能会导致问题     当代码中存在循环引用现象时,引用计数算法就会导致问题     解除变量的引用不仅可以帮于消除循环引用现象(一个变量使用完之后赋值为null),而且对垃圾收集也有好处。为了确保有效的回收内存,应该及时解除不再使用的全局对象、全局对象属性以及循环引用变量的引用     算法流程:       1.声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值引用次数就是1       2.同一个值又被赋值另一个变量

根据反射和属性名称进行set方法调用

别等时光非礼了梦想. 提交于 2020-04-06 00:13:25
代码中有很多对象都用同样的属性名称,不一样的值,进行set值时,一堆重复代码,所以才产生了下面的想法: 通过反射和属性键值对调用一个通用的方法,实现对象的属性进行赋值,这样就可以避免很多重复代码了。 以下是我实现的三种方式: 方式一: 代码中通过方法set前缀和后缀匹配的方式获得需要调用的set方法。 public static < C > void setValueByFieldName( C c, Map<String, Object> fieldAndValues) throws Exception { List<Method> methods = Arrays. stream (c.getClass().getMethods()) .filter(m -> m.getName().startsWith( "set" ) && fieldAndValues .containsKey(m.getName().substring( 3 , 4 ).toLowerCase() + m.getName().substring( 4 )) ).collect(Collectors. toList ()); for (Method m : methods) { m.invoke(c, fieldAndValues.get(m.getName().substring( 3 , 4 )

Javascript函数声明与递归调用

元气小坏坏 提交于 2020-04-05 23:02:55
Javascript的函数的声明方式和调用方式已经是令人厌倦的老生常谈了,但有些东西就是这样的,你来说一遍然后我再说一遍。每次看到书上或博客里写的Javascript函数有四种调用方式,我就会想起孔乙己:茴字有四种写法,你造吗? 尽管缺陷有一堆,但Javascript还是令人着迷的。Javascript众多优美的特性的核心,是作为顶级对象(first-class objects)的函数。函数就像其他普通对象一样被创建、被分配给变量、作为参数被传递、作为返回值以及持有属性和方法。函数作为顶级对象,赋予了Javascript强大的函数式编程能力,也带来了不太容易控制的灵活性。 1、函数声明 变量式声明先创建一个匿名函数,然后把它赋值给一个指定的变量: var f = function () { // function body }; 通常我们不必关心等号右边表达式的作用域是全局还是某个闭包内,因为它只能通过等号左边的变量f来引用,应该关注的是变量f的作用域。如果f指向函数的引用被破坏(f = null),且函数没有被赋值给任何其它变量或对象属性,匿名函数会因为失去所有引用而被垃圾回收机制销毁。 也可以使用函数表达式创建函数: function f() { // function body } 与变量式不同的是,这种声明方式会为函数的一个内置属性name赋值