首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Python基础教程》第六章--读书

猜想 位置参数和位置肯定有关系,使用它,它会默认赋值给它位置对应的参数,那么,这里就是greeting。所以呢,这里才会赋值两次。...看如下例子: #定义函数 def add(x,y): return x+y 有一个由两个数字组成的元祖:params=(1,2) 此时使用*元算符就简单多了——不过是在调用而不是定义使用,...函数内的变量被称为局部变量(local variable)。 太痛苦了,这里的知识之前在学习JS就已经了解的挺多,作用域链等等。还是记载以下遗忘的知识好了。不赘述。...因为x作为形参,是局部变量,而函数里通过global又定义x是全局变量,因此出现错误提示中的错误。 嵌套作用域(闭包) python的函数是可以嵌套的,也就是说可以将一个函数放在另一个里面。...本章小结 这章的知识确实有点多啊,递归一直不是特别灵活运用,或许真该找本书看看。

70110
您找到你想要的搜索结果了吗?
是的
没有找到

Python自定义函数

知道函数是干什么用的,我们就开始自定义一个函数,也就是制作一个可重复使用的'工具'。...、调用函数不是直接写出具体指令呢?...有现成的为什么不用呢,有一个现成函数可以大大降低程序员的工作量。实现功能的第一反应应该是:是否有现成的函数/方法/模块 可用?而不是重复的造轮子。...那不得不提一下模块管理函数,当我们的自定义函数在py文件1,我们在py文件2想调用时如何使用呢,往下看: 方法一: 要想使用模块中的函数需要:模块名+函数名 import module # 这个module...,只要你一个眼神肯定,的写就有意义,我们都需要勇气,去相信头发还在,人潮拥挤能感觉你,放在手心里你的真心。

79430

Python编程常见问题与解答

13.问:调用函数提示“TypeError: f() missing 2 required positional arguments: 'a' and 'b'”,该怎么办呢?...答:调用函数,位置参数的数量必须符合函数定义,如果函数要求接收2个位置参数,那么调用时也应传递2个位置实参。...19.问:已知x是一个字符,想使用x+1得到一个字符,为什么提示“TypeError: can only concatenate str (not "int") to str”呢?...遇到这种情况,仔细检查代码的逻辑和问题的要求是否一致,是否把>写成>=,或者忽略range()函数返回的是左闭右开区间,是不是把运算符**写成*,是不是代码缩进有错误。...24.问:机器上明明是有test.txt这个文件的,为什么使用内置函数open()打开提示文件不存在呢? 答:如果文件test.txt不在当前文件夹中,在打开或读写必须指定完整路径。

3.4K10

箭头函数的意义和函数的二义性

为什么还要有箭头函数?...答案只有一个:消除函数的二义性。函数的二义性那什么是函数的二义性呢?...user();这就是函数的二义性,至于为什么会出现这种情况,这个就要追溯到 JS 的历史渊源感觉应该是 JS 这门语言在设计上的缺陷。...后来开发者就在函数的命名上定义一套规范,普通函数首字母小写,构造函数首字母大写,就像下面这样:// 普通函数function user(){};// 构造函数function User(){};但毕竟这个不是强约制性的...官方一直都知道这个问题,只是一直没解决,后来ECMAScript 6在给 JS 打补丁的时候,引入了两个概念:箭头函数class实例它们的作用都是为了消除函数的二义性。

10710

javascript 中的 delete

在我看来初学者也能很快上手并掌握要点.但很快偶然就发现一个小坑 —— 关于删除 function 的很有趣的误解.当然也还有一些其他的小错误(如函数声明和函数表达式的区别),但在本文中就展开讨论....但这还不是全部.通过显式赋值创建的属性在删除总会抛出错误.不仅此处有一个错误,而且创建的属性似乎还被设置DontDelete标志,这当然是不应该的: [javascript] view plaincopy...自信地解释 “删除的目标不是一个对象的 property ,delete 应该是无操作”.现在我们理解了 delete行为的核心,就很清楚地知道,这个答案是相当不准确的.delete不区分变量和属性...在我看来初学者也能很快上手并掌握要点.但很快偶然就发现一个小坑 —— 关于删除 function 的很有趣的误解.当然也还有一些其他的小错误(如函数声明和函数表达式的区别),但在本文中就展开讨论....自信地解释 “删除的目标不是一个对象的 property ,delete 应该是无操作”.现在我们理解了 delete行为的核心,就很清楚地知道,这个答案是相当不准确的.delete不区分变量和属性

3K80

Promise进阶——如何实现一个Promise库

实现流程 首先,我们来看下,在实现的这一个Promise中,代码由下面这几部分组成: 全局异步函数执行器 常量与属性 类方法 类静态方法 通过上面这四个部分,我们就能够得到一个完整的Promise。...这四个部分互相有关联,接下来我们一个一个模块来看。 全局异步函数执行器 在之前的Promiz的源码分析的博客中有提到过,我们如何来实现一个异步函数执行器。...因此,下面我们提供一个用宏任务来实现异步函数执行器的代码供大家参考。...大家到这里可能会奇怪,我们的this指向没有发生变化,但是为什么我们的this指向的是那个新的Promise,而不是原来的那个Promise呢?...我们在这里需要特别说明下的是,有些人会认为我们在调用then函数传入的两个回调函数fn和er,当前Promise就结束,其实并不是这样,我们是得到了fn或者er两个函数的返回值,再将值传递给下一个Promise

1.4K20

手写系列-这一次,彻底搞懂 Promise

当我在麦当劳点一份汉堡套餐,收银员会给我一张收据,这个收据就是 Promise,代表已经付过钱,麦当劳会为一个汉堡套餐的承诺,要通过收据来取这个汉堡套餐。...那么这个买汉堡得到的承诺会有以下 3 种状态: 等待状态:刚下单,汉堡还没做好,这时可以在等待汉堡,同时做其他事情; 成功状态:汉堡做好了,通知取餐; 失败状态:发现卖完了,通知退款; 需要注意的是...,状态的修改是不可逆的,汉堡做好了,承诺兑现,就不能再回到等待状态。...如果 x 是函数或对象 如果 x.then 是函数 执行 x.then 如果 x.then 不是函数 执行 resolve(x) 如果 x 不是函数或对象 执行 resolve(x) 代码如下: function...4.1 事件队列 遇到一个异步事件后,并不会一直等待异步事件返回结果,而是会将这个事件挂在与执行栈不同的队列中,我们称之为事件队列。 所有同步任务执行完成后,系统才会读取”事件队列”。

27330

Python快速学习第七天

为什么会有这样的结果?在调用一个实例的方法,该方法的self参数会被自动绑定到实例上(这称为绑定方法)。前面已经给出几个类似的例子。但是如果直接调用类的方法(比如Bird....为什么super函数这么超级 在我看来,super函数比在超类中直接调用未绑定方法更直观。但这并不是它的唯一优点。...思考这个例子时,下面的两点应该引起读者的重视。 ☑ __setattr__方法在所涉及的特性不是size也会被调用。...为什么不使用列表?因为列表的杀伤力太大。如果有一个函数,可以一个一个地计算值,那么在使用时可能是计算一个获取一个值——而不是通过列表一次性获取所有值。如果有很多值,列表就会占用太多的内存。...为什么不在定义的时候把它定义一个函数? 已知的皇后的位置被传递给conflict函数(以状态元组的形式),然后由函数判断下一个的皇后的位置会不会有新的冲突。

2.2K50

手写系列-这一次,彻底搞懂 Promise

当我在麦当劳点一份汉堡套餐,收银员会给我一张收据,这个收据就是 Promise,代表已经付过钱,麦当劳会为一个汉堡套餐的承诺,要通过收据来取这个汉堡套餐。...那么这个买汉堡得到的承诺会有以下 3 种状态: 等待状态:刚下单,汉堡还没做好,这时可以在等待汉堡,同时做其他事情; 成功状态:汉堡做好了,通知取餐; 失败状态:发现卖完了,通知退款; 需要注意的是...,状态的修改是不可逆的,汉堡做好了,承诺兑现,就不能再回到等待状态。...如果 x 是函数或对象 如果 x.then 是函数 执行 x.then 如果 x.then 不是函数 执行 resolve(x) 如果 x 不是函数或对象 执行 resolve(x) 代码如下: function...4.1 事件队列 遇到一个异步事件后,并不会一直等待异步事件返回结果,而是会将这个事件挂在与执行栈不同的队列中,我们称之为事件队列。 所有同步任务执行完成后,系统才会读取”事件队列”。

17730

promise源码详解,助力你轻松掌握promise

callback 最早处理异步的方法就是callback,就相当于我让你帮我扫地,我会在给你发起任务给你一个手机,之后做自己的事情去,不用等你,等你扫完地就会打手机给我,诶,就知道地扫完了。...,Promise中是异步操作,需要在我们之前定义的回调函数数组中添加一个回调函数。...,我们在用Promise的时候可能会发现,then函数中return一个值,我们可以继续then下去,不过是什么值,都能在下一个then中获取,还有,当我们不在then中放入参数,例:promise.then...如果onFufilled不是函数,就需要自定义函数用来返回之前resolve的值,如果onRejected不是函数,自定义函数抛出异常。...then会等待return后的promise,导致自己等待自己,一直处于等待 return reject(new TypeError('循环引用')) } //如果x不是null,是对象或者方法

96510

​promise源码详解,助力你轻松掌握promise

callback 最早处理异步的方法就是callback,就相当于我让你帮我扫地,我会在给你发起任务给你一个手机,之后做自己的事情去,不用等你,等你扫完地就会打手机给我,诶,就知道地扫完了。...,Promise中是异步操作,需要在我们之前定义的回调函数数组中添加一个回调函数。...,我们在用Promise的时候可能会发现,then函数中return一个值,我们可以继续then下去,不过是什么值,都能在下一个then中获取,还有,当我们不在then中放入参数,例:promise.then...如果onFufilled不是函数,就需要自定义函数用来返回之前resolve的值,如果onRejected不是函数,自定义函数抛出异常。...then会等待return后的promise,导致自己等待自己,一直处于等待 return reject(new TypeError('循环引用')) } //如果x不是null,是对象或者方法

49550

10 种最常见的 Javascript 错误

异步获取数据,不管它是在构造函数componentWillMount还是componentDidMount中获取的,组件在数据加载之前至少会呈现一次, Quiz 第一次呈现时,this.state.items...TypeError: ‘undefined’ is not a function 您调用未定义函数,这是 Chrome 中产生的错误。...因此,在窗口对象的上下文中定义一个传递给setTimeout()的匿名函数,该函数没有clearBoard()方法。...Uncaught TypeError: Cannot set property 当我们尝试访问一个定义的变量,它总是返回 undefined,我们不能获取或设置任何未定义的属性。...如果在使用事件处理系统遇到此错误,请确保使用传入的事件对象作为参数。像 IE 这样的旧浏览器提供一个全局变量事件,但并不是所有浏览器都支持。像 jQuery 这样的库试图规范化这种行为。

6.8K80

为什么range不是迭代器?range到底是什么类型?

在系统学习迭代器之前,一直以为 range() 方法也是用于生成迭代器的,现在却突然发现,它生成的只是可迭代对象,而并不是迭代器!...现在微妙之处就在于,为什么给 5 种内置方法都设计迭代器,偏偏给 range() 方法设计的就是可迭代对象呢?把它们都统一起来,不是更好么?...这一直没注意,原来 range 类型居然跟列表和元组是一样地位的基础序列!一直记挂着字符串是不可变的序列类型,不曾想,这里还有一位不可变的序列类型呢。...由此推论,其它修改动作也会破坏等差数列结构,所以统统不给修改就是。 4、小结 回顾全文,得到了两个偏冷门的结论:range 是可迭代对象而不是迭代器;range 对象是不可变的等差序列。...但如果追问,为什么 range 不是迭代器呢,为什么 range 是不可变序列呢?对这俩问题,你是否还能答出个自圆其说的设计思想呢?

84870

1000个项目中前10名的JavaScript错误介绍

(unknown): Script error 未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制...TypeError: ‘undefined’ is not a function 您调用未定义函数,这是 Chrome 中产生的错误。...因此,在窗口对象的上下文中定义一个传递给setTimeout()的匿名函数,该函数没有clearBoard()方法。...Uncaught TypeError: Cannot set property 当我们尝试访问一个定义的变量,它总是返回 undefined,我们不能获取或设置任何未定义的属性。...如果在使用事件处理系统遇到此错误,请确保使用传入的事件对象作为参数。像 IE 这样的旧浏览器提供一个全局变量事件,但并不是所有浏览器都支持。像 jQuery 这样的库试图规范化这种行为。

6.2K10

JS原生方法原理探究(六)从 Babel 转译过程浅谈 ES6 实现继承的原理

_classCallCheck 函数 这个函数会接受一个实例和构造函数作为参数,内部的 instance instanceof Constructor 用于判断这个类是不是通过 new 调用的,如果不是就抛出一个错误...如果方法本身已经定义该特性,则采用该特性;如果没有定义,则定义该方法为不可枚举 configurable:该属性(方法)是否可以配置 writable:如果该属性是数据属性而不是访问器属性,那么会有一个...这个方法接受一个父类和子类作为参数,首先会检查父类是不是函数或者 null,如果不是,则抛出错误(为什么父类可以是 null?...之后,result 可能有三种取值: 一个继承父类实例所有属性的子类实例 父类构造函数的调用结果,可能是父类构造函数中自定义返回的一个非空对象 父类构造函数的调用结果,可能是默认返回的 undefined...这里的 result 我们知道也有两种取值,如果是一个继承父类实例所有属性的子类实例,那么实际上等价于经过增强的 this;如果是父类构造函数中自定义返回的一个非空对象,则意味着调用 Son构造函数之后返回的对象实际上并没有继承父类中声明的实例属性

1.1K20

JS原生方法原理探究(六)从 Babel 转译过程浅谈 ES6 实现继承的原理

_classCallCheck 函数 这个函数会接受一个实例和构造函数作为参数,内部的 instance instanceof Constructor 用于判断这个类是不是通过 new 调用的,如果不是就抛出一个错误...如果方法本身已经定义该特性,则采用该特性;如果没有定义,则定义该方法为不可枚举 configurable:该属性(方法)是否可以配置 writable:如果该属性是数据属性而不是访问器属性,那么会有一个...这个方法接受一个父类和子类作为参数,首先会检查父类是不是函数或者 null,如果不是,则抛出错误(为什么父类可以是 null?...之后,result 可能有三种取值: 一个继承父类实例所有属性的子类实例 父类构造函数的调用结果,可能是父类构造函数中自定义返回的一个非空对象 父类构造函数的调用结果,可能是默认返回的 undefined...这里的 result 我们知道也有两种取值,如果是一个继承父类实例所有属性的子类实例,那么实际上等价于经过增强的 this;如果是父类构造函数中自定义返回的一个非空对象,则意味着调用 Son构造函数之后返回的对象实际上并没有继承父类中声明的实例属性

1.1K10

Python新手常见的17个错误分析

总结过一些初学者常出现的错误之后,决定将其中一些作为例子分享出来,以帮助大家认识并解决这些错误。 这是本系列第二篇文章。总结了Python新手常犯的17个错误,并列举出了一些案例。...” 通常你想要通过索引来迭代一个list或者string的元素,这需要调用 range() 函数。...” 在函数中使用局部变来那个而同时又存在同名全局变量是很复杂的,使用规则是: 如果在函数定义任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。...这意味着你不能在定义它之前把它全局变量在函数中使用。...该错误发生在如下代码中: 15.尝试使用 range()创建整数列表 提示:“TypeError: 'range' object does not support item assignment” 有时你想要得到一个有序的整数列表

1.2K110

细说Js中的this

这是一个具体的返回值。根据上面的值,得到this的值为undefined,非严格模式下这里隐式装换为window对象。...this 提供一种更优雅的方式来隐式“传递”一个对象引用,因此可以将API设计得更加简洁 并且易于复用。...如果 Type(argArray) 不是 Object, 则抛出一个 TypeError 异常 .令 len 为以 "length" 作为参数调用 argArray 的 [Get] 内部方法的结果。...这里又提到了10.4.3的执行函数代码的规则: 控制流根据一个函数对象 F、调用者提供的 thisArg 以及调用者提供的 argumentList,进入 函数代码 的执行环境,执行以下步骤:...按 10.5 描述的方案,使用 函数代码 code 和 argumentList 执行定义绑定初始化步骤。

4.3K20
领券