摘要: 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。 具有iterable类型的集合可以通过新的for ... of循环来遍历。 for ... of循环是ES6引入的新的 阅读全文
posted @ 2018-07-23 17:57 持&恒 阅读(12080) 评论(0) 推荐(0) 编辑
摘要: 字符串不可变 多行字符串 由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示: 模板字符串 要把多个字符串连接起来,可以用+号连接: 如果有很多变量需要连接,用+号就比较麻烦。ES6新增了一种模板字符串,表示方法和上面的多行字符串一 阅读全文
posted @ 2018-07-23 17:36 持&恒 阅读(582) 评论(0) 推荐(0) 编辑
摘要: JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量: 在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响, 阅读全文
posted @ 2018-07-23 17:20 持&恒 阅读(1240) 评论(0) 推荐(0) 编辑
摘要: 该系列教程都来源于:廖雪峰老师的博客 JavaScript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的。 简单地说,JavaScript是一种运行在浏览器中的解释型的编程语言。 那么问题来了,为什么 阅读全文
posted @ 2018-07-23 16:57 持&恒 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。 正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等; 类似__xxx__这样的变量是特殊变量,可 阅读全文
posted @ 2018-07-23 16:01 持&恒 阅读(458) 评论(0) 推荐(0) 编辑
摘要: 原文 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下: int()函数 阅读全文
posted @ 2018-07-23 15:36 持&恒 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 函数对象有一个__name__属性,可以拿到函数的名字: 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“ 阅读全文
posted @ 2018-07-23 11:47 持&恒 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: 通过对比可以看出,匿名函数lambda x: x * x实际上就是: 关键 阅读全文
posted @ 2018-07-23 11:29 持&恒 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 原文 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: 当我们调用lazy_sum()时 阅读全文
posted @ 2018-07-23 11:26 持&恒 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 原文 排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。 Python内置的sorted()函数就可以对list进行排序 阅读全文
posted @ 2018-07-23 11:11 持&恒 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 原文 Python内建的filter()函数用于过滤序列。 和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。 例如,在一个list中,删掉偶数,只保留奇数, 阅读全文
posted @ 2018-07-23 10:59 持&恒 阅读(350) 评论(0) 推荐(0) 编辑
摘要: Python内建了map()和reduce()函数。 我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 阅读全文
posted @ 2018-07-23 10:32 持&恒 阅读(904) 评论(0) 推荐(0) 编辑
摘要: 原文 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list、tuple、dict、set、str等; 一类是generator,包括生成器和带yield的generator function。 这些可以直接作用于for循环的对象统称为可迭代对象:Iterabl 阅读全文
posted @ 2018-07-23 10:08 持&恒 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 原文 点击这 推荐直接看原文,原文格式布局看起来比较舒服 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元 阅读全文
posted @ 2018-07-23 09:51 持&恒 阅读(171) 评论(0) 推荐(0) 编辑