在排审中,函数可以做很多事情,那么看断公交车票价、自动制作、咖啡、预算、买车,这些都能用几行函数搞定,那今天带大家用函数做这几个练习,那么接下来开始练习吧。那今天按例 公交车票价计算器公交车票价规则,成年人二元,学生六到二十二周岁负一元。老年人六十五岁以上和儿童六岁以下免费。那今天首先我们用 f 命名公交车收费的函数 bismarthy, bismarthy 接受年龄 h 和是否学生的判断。 接着我们用 if 判断,如果年龄大于等于六十五或者小于六,满足免费条件,直接 return in 就是 零元,注意 o 表示,或者那今天如果没有免费。第二个 if 判断,如果年龄在六到二十二之间,并且以 the student 的 判断为真,则返回 e 就是 学生一元。 如果以上两个条件都不满足,就自行最后的 return, 即乘人票。那今代码中 h 大 于等于六岁,且小于等于二十二岁,是 python 特有的连续比较, 非常直观。那今代码写好以后,我们分别调用函数测试以下,二十岁学生,七十岁老人,三十岁上班族,点击运行,输出,结果为一元,零元、两元。那今代码完全符合我们设定的规则, 这样一个公交车收费代码就写好了。那接接下来我们做案例二,自动咖啡机同样的,我们先定义一个自动咖啡机的函数叫 make coffee, 它一共接受一个制复串参数, coffee type 就是 咖啡类型。 那今天第一行判断,如果 coffee type 等于拿铁,就返回拿铁的制作步骤, if 表示或者判断是否等于美式,试着返回美式的步骤, 如果都不匹配 s, 分 子返回一个友好的错误提示,那今天注意,每个分子都用了 return 函数,执行到 return 就 会立即结束,不再执行后面的代码。函数写好以后,我们调用函数传入拿铁和美食,就会得到对应的结果,就是制作的过程 漏漏传入其他名称,比如卡布奇诺会返回。抱歉,只提供拿铁和美食。第三个,我们做一个买车预算,如果你想买车,帮你判断钱够不够,不够还差多少。函数 car 接受两个数字,现有钱数 money 和车价 car price 根据一行判断,如果 money 大 于等于 caprice, 说明钱够够的话,我们再计算买完车还剩余多少米,用 left 来存储,用 money 减去 caprice, 然后用 f 是 z 格式化支付串返回。恭喜,钱够还能剩下 x 元,如果钱不够,执行 l 是 分子 计算差额,用差价减去存款,返回还差外元。写完了,我们来测试两个例子,分别输入,存款五万,差价八万,存款十万,差价八万, 点击运行就会打印出对应的结果。那么恭喜你学会了面向对象函数。作业来了,请制作一个自动判断订单超时的作业。
粉丝4.8万获赞15.5万

拍放,每日学一个小知识,今日学习 property 函数。 property 函数的作用是将类的方法伪装成属性,实现属性的可控访问、读取、修改、删除,无需调用括号即可使用。 使用语法固定写法 property stat 等于 stat 等于 stat 等于 stat 等于 stat 为读取方法, stat 为删除方法。注意要点是,一、仅定义 get 时为只读属性。二、 也可作为装饰器使用。 at property 更简洁,下面将十秒案例展示,稍后提问。 提问,使用 at property 装饰器时对应的修改方法,装饰器名称是什么?知道答案的小伙伴把答案打在评论区。

大家好,从今天这条视频开始,我将带大家从零起步,系统学派档,同时还会详细讲解各类编程语言知识, a x c 创作工具用法。这套内容我整整筹备制作了三个月,总时长超三百分钟,全程干货无废话, 不管你是纯零基础小白,还是想查漏补缺、巩固基础,都能轻松跟上。学习过程中,但凡你有任何派脏相关疑问、操作难题,或是想深入钻研某个知识点,都可以直接在评论区留言,咱们一起探讨,共同进步。现在派脏已经是超级热门的编程语言,应用场景极其广泛,办公自动化、数据爬取、数据分析几乎覆盖所有使用场景。 很多同学都好奇,这些高价值派脏项目到底是怎么实现的?从这条视频开始,我会一步步带大家落地,从派脏基础环境搭建到需求分析,再到调试运行技巧, 最后完成完整项目。实战视频里用到的所有学习工具、实战案例,圆满五百练习完整学习路线,还有派藏热门方向、自动化、数据分析查重等的配套资料,我都统一整理好了。有需要的留言在评论区敲三个七,或者来我的公众号公开群,可以直接进群免费领取。今天要讲的内容是派藏高阶函数全面了解, 来看一下。高阶函数啊高阶函数,高阶函数, 那他就等于我们之前学过的内置函数,那这是一码事。那为什么他叫高阶函数呢? 因为他在完成某些需求的时候更加高效一点。高效在哪里呢? 你?你得知道这个高阶函数具体是哪几个,哪个他怎么去用,那你自然就知道他高效在哪里,高阶在哪里,所以你首先知道他本质上就是个内置函数,能懂 piston 当中呢? piston 当中,咱们高阶函数本质上它就是个内置函数。在 piston 里面已经定义好我们直接用的三个函数,第一个 mac, 第二个啊,叫什么名字来着? f, i, l, t, e, r 啊,我就不读了。好,第三个 reduce 函数,但高阶函数就选这三个,看起来它们三个也是普普通通啊,只是我不认识而已,对不对? 实际上在使用他们三个的时候呢?他的这个时餐,咱们注意一下时餐,截止目前为止,时餐 我们只去用过什么呢?什么数值类型啊,训练类型啊,制服串类型啊,你有用过函数吗?有没有尝试过把函数作为一个时餐 去用?是没有哎,高阶函数他就可以,他第一个十三,他就是个函数名,第二个十三他是一个训练数据 啊。那么所谓的高阶函数呢?首先不管是这三个里面的哪一个,他 都是第一个是函数,第二个时差是训练数据,那么你就能够清晰的知道他一般用在什么地方了。那就是对训练的数据进行批量 批量操作,处理的时候啊,处理操作时会用到,哎,其他时候也用不上,因为它只针对于序列操作序序列数据去使用, 能懂?就是都是针对于序列数据的。那至于这个序列数据是字母串呢?还是列表呢?还是啊集合字典呢?都可以,那只要是个序列都可以放在这里, ok, 那 他又有什么区别呢?同一个操作为什么要来三个函数?那肯定不太一样,对吧?先看第一个函数 m f, m f 呢? 第一个时餐是个函数名。这个函数老师提个问题,目前我们学的函数分成几个,几个类别就分成几种,分成几种,大学的分成几种。嗯, 大学的分成几种?现在学的函数啊,可能大家不知道怎么去分类啊。那我就讲了,目前的这个函数呢? 内置函数算一种常规函数,自己去做的这个函数。第二种,刚刚学了个匿名函数。 第三种,那咱们麦普这个高阶函数的 第一个时餐,你可以放内置的,也可以放常规的,也可以放匿名的。那通常是哪个?这里答,大家选一下。通常是哪一种?大家觉得是哪一种?放的最多的应该是哪一种? 应该是哪一种?应该是。对,应该是匿名函数啊,因为他是,你看这个地方他只能放一行吗?你要是放个常规函数,对吧? 函数名接过来,你前面肯定要放很多内置的。内置的也行啊,内置的直接接个函数名也行。好,那总的来说三种都能放,就看你要用哪个功能的,要用哪个功能作用在序列数据身上了,对吧? 好,那么现在我有一个功能,我是想着把训练数据里面的每一个每一个字母都转成大写。训练数据长啥样呢?长这样, 呃, d 一。 ok, 长这样子,我现在想要去将我的这个训练数据全部转换成大写, 你用内置的也行啊,用常规的也行,用匿名的也行。我先给你们去来个常规的,因为你只有常规的会写匿名的,你才会写,能懂。我现在这么写,你们看一下, 我来个函数叫 a tens a, 这个函数自己去定义的啊,里面跟个 pass, 再去调用 tens a 好, 那么将来如果我的这个函数要对里面的每一个数据进行操作,那我势必 要拿个负循环,便利里面的数据取出来之后作为时餐传进去。所以这个时餐我没有对他进行处理,而是直接告诉你,他是训练中的每个数据 传递到这个行餐里面,行餐我就来一个,因为是一个一个数据传的,所以我就来一个,就来一个 s, s 传进去之后,他是不是要把我的这个数据数据数据转换成大写? 那确定一下嘛,当前数据是字母串类型,它要转换成大写,则需要去调用一个叫 s 打点调用 u p, p, e, r 函数去达到转换成大写的目的。 还记得这个函数不?字符串类型的转换大写。操作好,这里是不是就可以得到一个结果,这个结果我把它作为返回值进行返回。 ok, 这是我写好的 常规函数,我写好的常规函数,我定义好的常规函数。将来在使用 mac 的 时候,我就直接去将 函数名定义好的常规函数的函数名跟过来。注意不要跟小括号啊,跟上小括号就是在这个位置要去调用一下这个函数了,而我们并不需要调用,我们就跟上名字即可。 好,把序列放过来。 ok, 那 么它的功能就会作用在序列,作用在序列数据身上。 mac 的 功能就是函数的所在功能啊, 作用在序列的每个数据中。好,你看一下它是怎么作用的,人家 a 就是 转换大写的作用,作用在他们身上,那就通通变成大写。 最后我把这个结果给他保存一下。当然如果说,如果说我们直接去保存的话, 他会跟我们在学习匿名函数一样,会去得到一个内存地址。 mac 函数的内存地址 就是得到一串 id, 那 我想要的是什么呢?我想要的是一个数据,那你想要什么样的数据? ok, 如果你想要一个列表类型的数据,你就用列表 这个函数给它转换成列表就 ok 了。如果你想得到一个函数,你就用函数去转, ok, 那 么现在,哎,他就是个元组,我换成 list, 哎,他就是个列表,反正我想要一个数据,我就用哪个数据函数去转就行了, ok, 那 么这个就是我们通过常规函数处理之后的结果,你会发,你会看到非常的高效,这个 mac 就 这么高效,定义好的函数名字跟过来直接作用在他身上,那如果说 这个函数是内置的呢?我直接就拿过来用了,中间省掉了那个什么负循环,便利取值,取出来再去用,就省了一些事情,对不对?所以讲他就是高效一点。那再比如什么呢? 我能不能去将刚刚的这个常规函数给它写成匿名函数呢?给它写成匿名函数,改成二二匿名函数。先来个 number, 那么打后面跟行餐,然后冒号去连接返回值, ok, 好, 那么这一行代码就直接把前面的这两行省掉了, 搞定运行还是一样的结果,全部它的字母全部转大写 就是你 number。 秘密函数通常会结合高阶函数去用啊,因为确实啊,你像我定好的这个 a 函数可能就在这个地方用一次了之后都用不上,那我就没有必要把它做成一个常规函数,我把它做成秘密函数,是不?看起来更舒服一点? 他俩的关联性是不是更高一点,对不对?懂不懂?来这里,懂得懂得,来,给老师走个。二。有没有问题?有问题提问题啊?哪个地方用?不会用的话把问题提出来啊。就是还有更方便的,你看那个麦,那个什么优 u p p e r, 他 这个 u p p e r。 哦,他是需要一个调用使用的啊。不行, 那么可以去用。用什么呢?用那个就还有个更更加简写的,就是 一些内置函数,内置函数,内置函数,它的名字可以直接跟过来。嗯,就比如说呢? 比如说这个 l 一, 它里面的是是什么?是矩阵类型,我想要对里面的每一个数据进行数据类型检测,我把太普跟过来, 这个太普所在的功能就用在虚列的每个数据中,那就是直接就是将它的类型检测出来,得到的结果全是矩阵类型, 对吧?对,就直接去跟含内置的函数,也行也行,也很高效啊,也很高效。但这个就是 mac, mac 他 能够去连接,连接 第一个时餐和第二个时餐的关系。那原本这两这这个函数啊,和这个序列两杆子打不着的一个关系,那通过 mac 高阶函数把它们两个关联在一起,它的作用就能够快速作用在序列数据身上,你懂 能懂不?没懂的话是哪个地方没懂?没懂的话是哪个地方没懂?那像这个内置的我就重视了啊,我给你们去分好类。第一种啊,他是常规的,常规的函数 自己去定义的叫常规。那第二个呢?是把常规函数简写之后的内名函数,内名函数第三个内置的啊,就直接去跟函数名过来, 对不对? ok, 我 把这里改成一个三呢?改成个三,内名函数没懂是吧?内名函数的话,他有他要且只要这一行就行了。这一行呢? 这个函数你如果没懂,老师讲了,你一定是常规函数定义的逻辑,你没懂,能不能懂这三行代码?第一行,第二行, 第三行能,呃,就懂这两行代码就行了,这个是调用,有没有都无所谓。能不能懂这两行代码? 这两行代码,这两行代码是不是就可以去完成把小写转换成大写的这个操作对不对?那我们现在是把这两行代码简写成一个匿名函数, 先选 number, 再把行参跟过来,冒号去连接该函数的返回值,跟过来就行了。在这个 number 匿名函数里面, 这个 s 是 什么?它是不是只待是 l e 里面用来去保存 l e, 就 接收到 l e 里面的每一个数据的一个变量,一个行餐,它是个 s, 是 个 a, 是 个 b 的, 无所谓。 return 是 啥意思? return 是 什么意思?返回值的意思啊,就是在这个函数返回值这里讲了,去把这个数据拿过来, ok 啊,那么麦谱就讲到这里了啊,麦谱就讲到这里了,好,课后一定要去看一下。老师讲了这个课程他都是一环扣一环的,前面这一环一定要听懂啊,后面这一环才能去听懂的。 对付函数和减减函数两个有一个就行了,对吧?对对,那这第一种嘛,常规函数这一行再加 他的定义就可以了。那这是第一种方式,我们打印一下,一看一下这第一种方式,一二三三行,常规函数需要三行去搞定。那第二种简写的话,直接就是一行, 直接就是一行一行,因为他把这两行简写了呀,是不是?对,就是同一个函数,同一个逻辑写法不同, 一个是按照那个规规矩矩的语法去写的,一个就是简化下来的,懂吗?好,就就过了啊,就过了那一只函数反而用的少一点。我是把这个稍微带了一嘴,我就不讲那么多了。好吧,好, mac 就 讲完了, 最后,呃,这节课可能可能讲不完这个 rid 这个再讲,但是这个啊, f r 这个函数 他比较好去理解,他和那个 mac 几乎是一个逻辑。那主要是这个函数名呢?他除了能够将功能作用在他身上以外, 他必须得是个过滤函数,他必须得是个过滤函数。怎样去构建一个过滤函数?那必然是这个函数里面,对吧?他是有, 他是有条件的,有条件之后才能去将咱们的这个数序列数据根据条件去进行过滤。 我还是以常规函数和命名函数进行对比给你们看一下。这里我们就来个 test b 看下能不能懂啊。 ten 它的这个里面直接去设置参数和返回值,参数是什么呢? 我还是给到一个 s 行餐式叫什么?无所谓啊,给个字母,随便给个字母都行。 s 和二去进行取余,余数是不是零? ok, 那 么现在你知道 s 是 什么吗? 训练里面的每个数据,那每个数据通过和二去取去进行条件过滤。 去进行条件过滤啊,所以它的作用,这个高阶函数的作用就是对训练数据 进行条件过滤的,当去就当我们判断的结果是 t, 则这个数据留下来,如果说是 f, 则这个数据 pass 掉去进行过滤。好, 高阶函数,你看嘛,老师在写这个高阶函数的时候,第一个时餐是 faction, 就是 一个函数,第二个时餐呢,是个可迭代对象,就是训练数据才能放,就两个参数,两个时餐。 那么过滤函数名,我直接把 b 换过来,训练数据还是这个不行了啊,这个是字母串类型。呃,来个 ar 吧, 存个,随便存点数字。 ok, 差不太多啊,就是把那个,把那个偶数给他留下来,他偶数比较少啊。 ok, 好, 就把那个偶数留下来,我直接把 l 二粘贴过来。那这里会得到一个结果吗?这个结果我们如果 啊,要他以什么类型给到我们,我们就用什么函数给它转换一下,我用类似的函数是想要我得到的结果是个列表。 ok, 来个 rex 四,打印一下。 rex 四,好,结果呢,就是偶数留下来了, 因为只有偶数条件才是 t, 当条件是 t 的 时候,数据保留下来,当条件是 f 的 时候,数据过滤掉。那这个是什么呢? 常规函数嘛?常规函数的写法。那常规函数这个函数你只用一次的话,只在这个地方用一次,你有必要通过这个地方去进行定义吗? 没有必要,所以最好呢,咱们还是将它改写成匿名函数, 匿名函数改写的时候,你就看行餐是什么,返回值是什么,你跟过来就行了, 还是这个高阶,还是这个 l 二前面放的,改写成 number 命名函数好,行参 s 冒号去连接返回值。 ok, l 二里面的数据就通过匿名函数所去内嵌的条件进行过滤,最终还是一样的啊,你要去得到列表,你再加个 list, 你 要得到源组,你就加一个 top, 那 反正它的这个数据是多个的,你得拿序列去保存呐,它是有多个数据。嗯,瑞斯五 好,自己打印一下 windows, 那 结果还是一样的,这个没擦啊,这没擦啊。 ok, 好, 那么这节课就讲到这里了, windows 的 话,它涉及到模块的导入使用,下节再讲吧。好吧,好, 咱们还是先把这个 mac 理解好。第二个高阶函数就在 mac 的 基础之上呢,是一定要去加一个过滤过滤操作的,它是将过滤操作和序列数据结合起来,将过滤 的这个条件作用在序列数据身上,当条件为 t 的 时候,数据留下来,当条件为 f 的 时候,数据筛选掉。这个是我们在后续学数据分析阶段的时候会去用到的一种做数据处理,数据高效处理的函数。 ok, 几下就没了啊,几下就没了。对,上面这种就不需要去剪写了,你想用第一种,你就用第一种,你想用第二种,你就用第二种,你用惯了,你自然就能切换自如了,对吧?前提你是你得用惯啊,你得用惯啊, list 的 top 这些。这个呢,就是数据类型转换的问题,咱们班确实啊,就是数据类型转换的时候呢,是学了哪哪几个函数,是学了那个什么 s, t, r, float, float 怎么打的好? int 好, 这个是前面,就是比较简单的数据类型转换,可以用的三个 函数,你要转换成什么类型,你就用哪个函数。那同理,在复杂类型序列类型里面也有 set top, 没有那个字典转换啊,没有这个什么 d、 i、 c、 t 去进行转换,因为字典它是键值对的结构,其他的序列它没有这个结构,所以它没有办法通过转换去构成键值。对, 明白,所以就这六个,六个转换的啊,函数你要转换成什么类型,你就用哪个函数啊,就这个意思啊,你其他就没有了。好吧,好,那么这节课没有问题的话,来给老师扣一个八,咱们就下课了。好吧,这节课老师讲了,他就是我们 排除基础最难的一节课,难也就难的了,能懂没有更难的了,难也就难到这里。所以 同学们如果课上吸收吸收不了的,一定要课后再去多巩固一下,包括老师之前有给你们去提供资料啊,像那个什么菜鸟教程啊,和那个 c、 s、 d、 n 博课啊,去看一下,去看一下,去看一下啊。 哪个哪个?是这些吗?它是转换的意思,这个是,这应该是忘了吧,它就是你看,呃,对,它就是数据类型转换的意思,你像 你像这个是矩阵类型嘛,通过 list 就 可以给它去转换成列表类型, 就是切类型的就切换数字类型,数字类型不同操作不一样吗?那如果说我们要满足这种数字操作时,就不得不去将数字类型转换了,懂吗?当然你像 你像四川,你这个函数,它里面放整数类型的时候,也可以给它转换成一个字母串类型。这个不是在这里讲过吗? 这个不是讲过吗?可以回头去看一下这些函数转换好。作业做一下啊,作业做一下作业做一下, 这个作业做一下啊。好,也不要给自己太大的压力,咱们具体的话一定要去结合实质操 作去做,然后我们具体的话一定要去结合实质操作去做。然后我们在后续的这个爬虫里面呢,你用起来的时候呢,也不会有,也不会说,就是综合性太强啊, 你最起码你对这个单词这个函数有点印象就好了,就到时候,呃,也会给他们去稍微带一下基础阶段同学们遗忘掉的知识,稍微带一下是吧?啊?就是爬虫快或者数据分析这个要去用到的函数操作去带一下的。 mac 这个这两个函数它是没有办法。呃,这两个函数它不是通过啊,第一个高阶和第二个高阶,它不是通过数据的个数去进行理解的, 你得理解它的作用,那第一个函数它是将函数作用在虚列中, 那他并不会对训练里面的数据去进行过滤,去进行删除,而第二个函数他会过滤。过滤是啥意思啊?这原本有十个,通过条件过滤变成,变成多少?变成三个了,这相当于是什么呢? 这个就相当于你写了个 if 条件判断在十个数字当中,只有是偶数的时候才会输出,那原本是不是十个数字,那现在只能去输出二四六八了。他是 在第二个高阶函数这里加入了一个过滤操作,所以结果不一样,你得先理解前面的,你才能把后面这个结果理解清楚啊, 这个这个字母串呢? string 就是 字母串的意思,这个是浮点型的意思, 这单词忘了整形列表集合分组。好,这个就到这里吧。

piffon 每日学一个小知识,今日学习 print 函数。 print 函数的作用是将指定内容输出到控制台,标准输出是 piffon 中最基础的输出函数。 使用语法固定写法 print 等于 and 等于反斜杠 n file 等于 s y s dot flash 等于 false。 核心参数 objects 为要输出的内容, set 指定分格符默认空格 and 指定结束符默认换行。注意要点是,一 可输出多个对象,用逗号分隔。二修改 and 参数可取消自动换行。下面将十秒案例展示,稍后提问。 提问, print 函数默认的结束符是什么?知道答案的小伙伴把答案打在评论区。

大家好,从今天这条视频开始,我将带大家从零起步,系统学派档,同时还会详细讲解各类编程语言知识, a x c 创作工具用法。这套内容我整整筹备制作了三个月,总时长超三百分钟,全程干货无废话, 不管你是纯零基础小白,还是想查漏补缺、巩固基础,都能轻松跟上。学习过程中,但凡你有任何派脏相关疑问、操作难题,或是想深入钻研某个知识点,都可以直接在评论区留言,咱们一起探讨,共同进步。现在派脏已经是超级热门的编程语言,应用场景极其广泛,办公自动化、数据爬取、数据分析几乎覆盖所有使用场景。 很多同学都好奇,这些高价值派脏项目到底是怎么实现的?从这条视频开始,我会一步步带大家落地,从派脏基础环境搭建到需求分析,再到调试运行技巧, 最后完成完整项目。实战视频里用到的所有学习工具、实战案例,圆满五百练习完整学习路线,还有派藏热门方向、自动化、数据分析查重等的配套资料,我都统一整理好了。有需要的留言在评论区敲三个七,或者来我的公众号公开群,可以直接进群免费领取。今天要讲的内容是派藏匿名函数,全面了解, 这样的话,我们讲一下这个匿名函数, 讲一下这个匿名函数啊,匿名函数,好,来看一下和匿名函数。匿名函数呢,它本质上,首先它是个函数啊,它是一种函数的类类别。那么它是一种怎样的函数呢? 它本质上是对于常规函数,就是我们上一节课所去学习到的这个啊,函数就称之为常规函数,通过 d、 e、 f 去进行定义创建的函数啊,那是对于这种常规函数的一种简写方式, 那这里就是直接把命名函数的作用挑明了啊,命名函数,哎,就是用来去简写代码的。简写什么代码呢?简写常规函数的代码, ok, 当然我们如果说直接去学习简写的话,你会觉得有一点难,所以在学习命名函数简写之前呢,先去将啊,我们之前有去学习过,有去接触过的, 你像 if 语句啊,啊,这个循环和序列啊这种啊命名函数呢,啊,不,这种简写方式呢,我们先给它学习一下,再带入到啊函数当中,函数这个场景当中去理解它。所以我们呢, 在讲另一函数之前,先去讲 if 判断的简写,再有就是负循环 去加上序列的操作简写。好,学了这两种简写之后呢,第三我们再去学习啊,常规函数第一,第一,第一 f, 常规函数的简写 啊,让你更好去更好,能更好去理解简写,他是什么啊?好一幅判断就不多说了,对吧,他的逻辑相信同学们都已经理解了。好,那么这里我写个代码,快速写个代码,同学们看一下啊, 看一下有没有问题,那么值呢?它里面保存的是十八。好,那么现在我们是判断十八是不是大于十。好,如果说大于十呢,我就直接输出数据为大于,如果说不大于十,则 a s 去给到输出的结果呢?是小于。这个逻辑比较简单,就是 两个分支,双分支之下的判断, if a s 的 判断。好,那么现在我要去将它去进行减写。 简写的话,他的简写方式啊,就有一个专业词去表达了,这个简写方式叫三木运算符,也叫三元运算符。 好,听起来比较高级难懂啊啊,你记留个印象就行了。三元运算符啊,就是 啊,把这种这种写法称呼为三元运算加三木运算。这样子啊,好,那我们直接来简写一下。简写就是记一下他的语法。 语法呢?还是要写 if, 还是要跟条件?那当这个条件他成立的时候呢?他是不是要去输出,或者说要去处理某些数据? 那我们要去输出的数据,如果说是大于这个字母串类型的数据,哎,就把它放到 if 的 前面, if 的 前面,它就是去放条件成立,去输出或者操作的数据 的数据。好,那条件不成立呢?条件的后面还得跟上 else, 去将条件不成立的这个数据放过来。 好,你会看上去你会觉得没有差别,两个语法没有差别,都是要一分二十,都是要数字出输出,只说由原来的几行 四行代码简写成了一行,是不是啊?就这么一点区别。简写吗?那肯定是要把原来的这个结构简化一下,但是如果说你要去仔细看一下这个语法,你会你会觉得狗屁不同,这里面这个逻辑就感觉不同。当然了,他都简写下来了,他那个逻辑是不是啊? 就会浓缩在一个单词或者一个数据里面去了,所以逻辑它在表达逻辑的时候它就不够清晰啊,所以它的优缺点大家就是先看一下。好,按照这个语法后面跟上条件的话,还是一样的需求,我们把那么大于实际的条件跟上。 冒号就不要写了啊,冒号不要写了。好,那么这个 number 大 于十成立的话,我们去输出的数据就是大于,就放到 excel 前面就行了。好,那,呃,他如果说不成立的话,我们写个 else, 把这个小于数据放到 else 后面, 总共是一二三四五五个部分,中间都用这个空格去隔开啊,都用这个空格去隔开,哎,就行了,看清楚。好,写好了之后呢,咱们这一行代码,他就会给到你一个判断的结果,你要么成立,要么不成立,他会给到最终你要去得到这个数据。 得到了数据之后呢,你可以直接去 print 打印,我得到的到底是小于还是大于,那当然呢,条件是成立的,所以得到一个大于是不是? ok, 那 通常的话我们可能还会去将它保存一下,然后再去打印, 能懂,这你能看懂,但是你直接打印也可以了,都是大于。好,这个就是 一幅判断的简写啊,他们有时候可能会在其他就是呃程序员里面所呃,会去看到这种写法,但你得知道他是一个怎样的东西。这种这种简写方式他的缺点是很明显的,他的这个语法是他的这个语法所去啊,表达的逻辑, 他的可读性是比较差的。其次就是,其次就是他只能满足简单的需求,复杂一点点他都不写,那比如说是多重判断,多条件,哎,他写不了那个 airf, 他 就写不了。 明确告诉你啊,他就写不了,但是他能够去嵌套啊,就是写多个 airf 进去,当然这种情况比较少,一般都是写个 airf 啊, 好过掉了啊。好,然后第二个像第二个简写方式就是负循环了。对,你可能会觉得第一种就是异步判断的简写,还不如不简写,对吧?那负循环结合序列操作的简写,可能它的实用性会更强一些, 更长一些,我们来看一下吧,还是一样的需求啊。好,你比如说我有这么一个数据, l 一 当中去存储列表数据,十一、二十二,三十三,哎,四十四,多来几个啊, 就这样子吧。好,那么现在我想要对于这个序列里面的每一个数据去 乘以一个二,或者说求个次方吧,或者求一个次方,啥意思呢?需求大家看清楚啊,就是需求啊,我们对序列 中的每个数据去进行统一操作。什么统一操作呢?求二次方操作就是求个平方,平方 操作能懂能懂吗?那这里肯定要结合负循环,你一个训练想要去操作里面的数据,一定会去结合负循环便利取值,不然你怎么取呢? 你要么就用下标去取,你要么就用切片去取你,要么就用一些函数,那这些操作能够帮你一次性操作所有数据吗?都不行,就只能用否循环能懂。所以序列操作你首先得想起来的就一定得是否循环否。 i 硬 l 一 没问题吧?这打印 i 是 不是打印十一、二十二,三十三、四十四? 好的,现在要去进行平方操作,用哪个符号用哪个符号?双信号啊?一个信号不够,双信号给个二,现在我们去进输出。那,那就是长这样子的啊,我就不看这个数字对不对了, 反正大概应该计算的是没有问题的尾数,尾数是对上的啊,最后一个数字是对上的,是不是? ok, 那 这个是我们正常放循环去结合虚列操作, 这个还算简单的一个需求。那刚刚学到了吗?简写吗?简写,你能怎么简写它呢?好,它也有个名字啊,它有个名字, 人家名字叫三木运算符,它的名字叫,呃,列表推导式。好,一听这东西一一听这个名字就觉得很高级,但其实就那样啊。 那么除了列表推导式以外呢?还有针对于其他序的类型,原组类型或者字典类型,操作时那人家就叫字典推导式,或者说原组推导式。序列不同,他名字不太一样啊,大家知道是怎么个事就行了。好吧。啊,那简写的话 他是这样子来的啊,他是先写个缝,后面依然是跟上变量应,他需要去操作的训练,看上去没差,对吧?好,我们在 for 循环操作完这个序列之后,会得到序列里面的每一个数据,现在要对每个数据进行操作,那这个操作的步骤你要放到 for 的 前面,你比如说要对它去求个平方,你就得把这个 i 星星二给它写到这里来。哎,就这么奇怪,就这么奇怪。 ok, 那 么这前面就是放 啊变量数据操作操作的啊。 ok, 好 了,最最外层还要记得加一个列表, 因为人家叫列表推导,是你最能得到的结果,一定得拿中框扩起来,表示它是个列表,对原列表里面的数据进行统一操作,那最后还是会得到多个数据啊,这多个数据要统一操作存储,我们就外层扩个列表给他存起来,明白, 好嘞,写一下嘛,这几个很简单了,否 i e 还是 l 一, 我就给它注视过来, 跟个 l 一 好,后面不需要跟冒号啊,直接去将对于这个 i 的 统一处理操作放到否的前面都。呃,空格隔开,哎,就行了。 那么注意外面呢,列表推导式得扩一层,中括号得扩一层,中括号就表示处理完了之后呢?还是个列表 好,我就用一个 l 二保存一下,或者你直接打印啊,你直接打印也 ok。 好, 那现在我们去运行看一下。哎,哎,长这样子了,这个就是列表推导式那种,这个叫列表推导式啊,这叫列表推导式, 其实还可以去结合意符判断。我我想一想啊,他这个这个里面还可以对于咱们最终的这个结果去进行判断,去进行判断。呃,我们比如说你,你想要去将 咱们这个偶数或者基数留下来去进行筛选嘛?你最终是一二三四四个数据,你还想要去进行筛选的话,我们就可以在他的这个后面再去加 e、 f, 跟上一个条件就行了。跟上一个条件就行了,对不对?嗯, 那我们要去将这个偶数留下来的话,写一个怎样的条件呢?怎样的条件可以让偶数留下来? 可不可以去判断这个 i 它和二去进行取余好,余数是不是零?如果说是零,那条件一定成立啊,是不是? ok, 右键去运行。哎,偶数是不就留下来了是不是? 当然后面还可以去接 airs 啊,后面还可以去接 airs, 就是 接着往后面去写,把条件不成立的也接上,但一般的话只会去进行条件成立的筛选啊,就这样子。好吧,就过滤均数,留偶数啊,过滤均数, 过滤基数啊,我们就是写个保留偶数数字, ok, 前面这两个关于三木运算符和列表推导式啊,大家听懂了没?大家听懂了不? 你像其他的什么原组推导师啊,换汤不换药啊,就把这个括号换换成小括号就是了啊,还有集合推导师也是一样的,把这括号换一下就是了啊。好,有没有问题?没问题,来给老师走一个一看一下,有问题把行号告诉老师,把问题提出来。这个这个条件他的逻辑是什么?需要老师给你们去解释吗? 你像这个数字,如果说是个二,二和二去取余余数肯定是零呢?只要是偶数和二去取余余数肯定是零,因为是整除的,能懂?那如果说是个三,那他的一个结果肯定是一,因为整除不下来,会有余数 啊,能稍微记一下吗?这个如果要去啊,去算个什么?偶数啊,基数啊,可以记一下这个条件啊, 对,可读性会比较差,一般就是用不上,一般用不上就一般,如果说甲方会要求你在写项目的时候就就多写一些,就是那个简写的方式的话啊,会去用到,会去用到,但是你,你像这一行代码确实省了很多事情,对吧?省了很多行代码, 但读起来很绕,是吧?可读性比较差,你像我们前面循环啊,硬判断啊,虚列啊,你哪个学的不好,差一点你都理解不了这行代码是什么意思啊,懂吗?用的很小啊,用的很小, 那个数据清洗里面会去用到数据啊,分析里面会去用一下。好,最后一个了,讲那么多就是为了引出咱们这个秘密函数。秘密函数,秘密函数是什么呢?那就是常规函数进行简写的一种 方法,那就叫匿名函数,跟其他的名字一样,听起来很高级,那么就那么回事,准备去学就知道了,是什么样的,是不是? 好,那同样我们去进行对比学习啊,来一个。嗯,需求,这个需求呢, 他一定得是既有参数又有返回值的,所以我打算直接将刚刚我们写好的这个穷平均值的需求直接给他粘贴过来, 求任意多个数字的平均值函数。 ok, 把一些不需要的我就通通删掉了。啊,这一行,这一行, 呃,我就直接打印了,好吧,我就不保存,然后再打印,我就直接打印他每次使用完的结果,让我们的代码更加的简洁一点。这个地方 好,我是把上个小节学的这个代码呢,直接复制粘贴过来了,大家看一下,看一下好,但这个代码的话,注意它是既有参数又有返回值,因为命名函数的语法里面,参数和返回值是必须要给的两个部分必须要给的, 所以咱们的这个常规函数啊,大家再仔细看一下他的,我就把这行删了,就看二十九行就行了,他的这个 二十九行是函数的调用,对吧?我去打个断点给你们看一下这个逻辑啊,你一定要理解这个逻辑,这个秘密函数,你才能知道他在干什么 好。二十五行在定义函数,紧接着他并不会进入二十六和二十七,因为这是调用函数之后才会去执行的代码,此时二十五行并没有去调用,而是定义,所以直接跳过来到三十行, 那三十行它是有个函数调用 a v g 的 一个调用,所以它就进去了。好,那么此时进入函数内部的同时,把这三个时差传递到 x 当中, 往里面 x 是 不是接收到了一二三,并且你看清楚是个小括号的一二三,说明它是个圆组类型,而且说了它就是个 x, 不是 新 x, 新在接收数据的时候就用掉了。 好,然后再往下面走,这个地方他就是个圆组,这个地方也是个圆组,一个是去求他的和一个是去求他的数据个数,他们相求的结果去进行消除, 除满运算,算出来的结果呢?是二点零就直接给你,给到你结果了,保存在瑞斯当中呢,也是二点零。好,那么此时这个瑞斯是不是二点零, 这个 race 是 不就是二点零,二点零作为返回值。看清楚啊,这个二点零作为返回值会被 return, 再次返还到三十行,你不信,你看。再往下面走呢,是来到三十行,并没有说直接退出程序,而是来到三十行,返回到 a v g 这个函数调用的地方,然后去打印这个睿斯值是多少,那么现在再往下面走,这个二点零就会去进行输出。能看懂这个就是函数它的执行流程啊,它这个执行流程依然是遵守代码自上而下去执行的 啊,这个逻辑只是说函数当中他是遇到函数调用才会去执行内部代码,他会有一点点特殊,但总的来说,总的来说还是那一套逻辑,一套流程下来有上由上到下的一套代码执行, 所以同学不要想的太复杂啊,数据到哪你就看到哪个地方就行了。好吧,好, 断点。调试完了之后呢,我们紧接着就开始去写匿名函数简写了,它的这个简写的语法是由一个单词叫 number 这个单词 这个内置单词去负责的,所以匿名函数也称之为 number 函数。 number 函数好,然后它空格啊, 它的语法非常的简单,不需要 def, 也不需要函数名,因为匿名函数,匿名函数字面意思就是把这个函数名给他隐藏掉,隐匿掉的意思,所以它的组成部分非常简单,只需要参数和返回值就可以了。 前面先写参数,再冒号去连接返回值,就这么简单,就这么简单。 ok, 那 我们现在通过 number 函数完成一样的需求时,应该怎样写?应该怎样写? 你,你的前提是什么呢?你这个常规函数你会写,你会写了之后,你知道这个参数这个小框里面是什么?你知道它的返回值是什么,你这个命名函数才才有会写的可能。明白, 所以常规函数已经有了,我们直接就是先写一个 number, 橙色的啊,内置的单词接上参数这个参数具体的话不是时餐,而是行餐, 哎,就是定义函数时,这个小方里面跟的是什么?他的一整个完整的行餐复制粘贴过来。行餐, 行餐,我把这个数字删掉啊,行餐,好在冒号去连接返回值,返回值什么呢?返回值是个 reis, 但是你直接写个 reis 可以 吗?不行啊, 返回值首先它一定是 return, 后面跟的是什么,它拿过来的就是什么,这个没毛病,但是这个 reese 它是由二十六行所去产生的一个变量,那你数据都没有,你把个变量拿过来干什么呢?所以我们实质要复制过来的是这一段, 能懂啊,能不能懂?这里好,参数,行餐到位了, return 后面去接的, 需要作为返回值送外面去的。这个顺序也有了,也拿过来了,好,行了,这就是常规函数的简写方式,你写好之后呢,依然是拿个变量给它保存一下,我们来个来个几? 来个瑞斯二吧。好吧,来个瑞斯二保存一下, ok 了, ok 了。同学们觉得这个函数写完了吗?这个简写方式写完了不觉得,写完了给老师一个 t, 觉得没写完,你给老师一个 f, 大家觉得写完了不 缺个打印,写完了没?写完,你觉得写完了不? 你看我这三十三行需要打印,打印肯定要有的啦,我们打印肯定是打印 rex 二,但是有一个非常重要的东西都能忘了吗? 食材,我现在可以直接把上面这个注释掉了我可以直接把上面这个注释掉了。我通过这一行代码完成这个需求, 逻辑上是可以了,但是你有没有注意到你要去求任意多个数字的平均值数字呢?这一行代码有数字吗?你求谁呢?是不是? 是不是调用没了?是吧?好调用,到底怎么去调用呢? 首先还是先打印,看一下瑞思二是个什么?看一下瑞思二,它这是个什么呢? function 函数的意思, number 函数也是匿名函数。 int 是 在什么地方? 它的内存地址,这后面接的这一串什么零零幺啊,六六七八呀,这个是内存地址,这就讲清楚了,就是说 你定义好的 number 函数、匿名函数,他在内存当中,他这个函数在内存当中存储的位置, 他的内存地址,那现在你看到这么个数字,你也不知道他用来干什么的,因为内内存地址确实没什么用啊,就是没什么用。 那到底怎么样我才能去将这个具体的实测数据传到这个 x 里面去,然后去求平均值呢? 首先咱们这一整串它就是个函数,这个函数被保存在 res 二里面, res 二打印才会去得到 number 函数的内存地址,所以我现在可不可以把 res 二就当成是这个没有名字的匿名函数 number? 那现在我要去传时差进去,我是不是在后面去加一对小括号给数据就行了? 求个二十二、三十三、四十四的平均值,结果是多少?三十三点零,有没有问题?能不能懂?就这里的话,咱们是有一个步骤是去将变量当成是函数去进行调用, 但是如果说你真的这么去理解,真的去理解成变量当成函数去调用的话, 你是不能知,你就是对于这整个逻辑你是不清晰的,你如果真的要去理解的话,你应该是怎么想? case? 它保存到的就是一个函数,那我把它当成一个函数去调用,有问题吗?没问题。那如果说我任意的一个变量里面保存任意的一个数据,我把 a 当成函数去调用,有问题吗?有问题,能懂 能懂,所以归根到底还是看等号右边是个啥?他是个函数,所以,哎,他能去调用,所以他能够去求咱们这三个数字的平均值,因为这三个数字传递到了 x 当中,并且求他的啊平均值, ok, 好, 这就是秘密函数,秘密函数就讲到这里,就讲到这里啊,如果说秘密函数还有其他操作, 那么都是不同的常规函数,提取不同的常规函数里面的 x 以及实啊,以及返回值出来构成匿名函数,然后去进行调用全参操作。 那有同学肯定要问了,那像这个匿名函数和常规函数,我到底我用哪一个呢? 或者说逆民函数,它的作用场景又是什么呢?首先常用的肯定是常规函数,那只有常规函数在我们写好的这个程序当中用起来不如逆民函数的时候,我们才会去用逆民函数。 那比如什么时候呢?比如说我们现在想要去定义定义一个只用一次的函数, 只用一次的函数,别说我就调用他一次,我之后就不用他了。那像这种函数,我们定义一行好一点呢?还是四行好一点呢?你或者说有些功能更加复杂的,肯定要好多好多行 就只用一次函数,这一次性函数的定义的时候才会去用地名函数。那其他场景下不用啊,因为确实可读性差,这个逻辑比上面的两种还要差一些, 多出来的新的单词,原有的这个 a、 v、 g 没了,因为什么呢?匿名函数给它名字隐匿掉了。第二,这是它确实能够去完成一些高效操作, 结合我们第三个小节去讲的高阶函数的使用,可以完成更高效的函数操作,把它这个只用一次的函数场景给它发挥出来。 ok, 那 么这个就是匿名函数的具体使用,再看一下有没有问题。你具体的话,他他的这个其他视力啊,其他视力啊什么的我就没有去讲了,因为没有很大必要,我们就把这个语法呢,就是学一下就行了,对吧?他也不需要同学们记得多多牢, 咱们重点还是学常规语法啊。好了,同样匿名函数他只只能去试用, 只能去试用一些简单的程序,复杂的程序他照样是用不了的。那他可以去结合什么呢? 结合前面的这个列表推导式,结合在前面的这个三目计算符,其他的都不行啊,你像多重判断啊,呃,或者说一些输出输入操作啊,这些都不行的,明白, 最常用的还是常规函数啊。好,那面函数就讲到这里了,大家没问题,来给老师走个二,有问题把问题提出来,返航后告诉老师,我看一下问题啊,我看一下你们的问题, a v g 都没有,为啥知道是平均值?因为这里在计算啊,这里有个计算逻辑啊,只要你这个时差传进去之后呢,一个求和一个求个数,然后去进行消除, 这不就是有结果出来了吗?出来之后保存到这里,然后打印就有了呀,打印打印函数调用是不就有了?对,返回值就是的啊,对,就是复杂一些。 好,那在拍摄里面的这个所有的简写方式,老师就给你们去全部讲完了,然后有什么不懂的话啊,给老师讲一下啊,所有的简写方式三个老师都讲完了啊, 他们之间其实可以相结合的,去操作的,同学们之后看到的话,看到这种就是简写的方式的,哎,它里面更加复杂的逻辑 啊,其实复杂也复杂不到哪里去,因为更复杂的他也实现不了啊。那一般就是函数里面去,就 number 函数里面去 啊,去添加一些衣服判断过滤顺序操作啊,或者说循环操作训练啊,是不啊?这节课呢会给你们去布置一些作业,大家可以尝试去做一下作业,去试一下啊,这个简写方式怎么去简写就行了啊。

大家好,今天我们来看一道软件测试拍摄面试题,拍摄的勾子函数。面试官问你这道题主要就是想知道你会不会搭建自动化框架,能不能做大局的拦截统一日制失败处理,用力管理,有没有架构思维, 而不是只会写简单的接口 u i 用力。那么我们先看一下什么是钩子函数。钩子函数它就是框架系统提前预留好的回调入口,我们不用改框架的原码,重写绑定这个入口函数,就能在固定时机插上我们自己的业务逻辑, 从而实现扩展拦截监听,那么它的核心本质也就是框架规定的时机。我们填写逻辑那么简单的表达,那就是框架已经写好了主流程, 比如说他是从开始到执行 a, 执行 b 结束,那么框架他会在某个节点留了空位,也就是我们的钩子。比如说在执行 a 之前,执行 b 之后, 那么你只需要实现这个钩子函数,框架运行到对应节点,就会自动调用你的函数,这个就是钩子。那么我们看一下 python 里面常见的三大钩子。 第一就是魔术方法钩子, python 它内置双下划线的方法,本质就是生命周期的钩子,在对象创建销毁曲值赋值时,它会自动触发。比如说我们常用的有实力出使划钩子创建实力钩子,对象销毁钩子, 获取属性赋值的钩子,还有上下文管理器钩子。那么我们再来看一下异常程序局钩子,有局未捕获,异常钩子在程序崩之前处发,可以统一日置告警。 还有程序退出的钩子,程序结束前必须执行的钩子,我们再来看一些框架级的钩子,这也是我们工作中经常使用到的,就是主流框架全靠钩子来做扩展,比如说我们的将 load 还有 flask, 他们都是请求前置钩子,后置钩子还有中间键钩子,信号钩子,包括我们的拍 test 的 测试框架,它里面也有很多钩子,像我们的用力前置,后置失败都会要使用钩子, 那么我们再来看一下我们五大高频必考钩子,因为他有时候面试官会问,那你在实际工作中会用到哪些钩子呢?就比如说第一个 a test confession, 它的作用就是派 test 在 启动初步化时执行全区只执行一次, 那么它的场景就是初步化全区配置,提取配置文件,初步制置,创建全区连接。还有就是派 test 筛选 start, 派 test 筛选 finish, 他们就是第一个就是在整个测试绘画开始前执行,下一个就是在整个绘画结束后执行一次,那么的它的场景有全区前置后置启动服务,关闭服务、清理全区资源等等。 还有就是派 test retest make port, 它也是一道高频的,作用就是捕获每条用力执行的结果,判断用力的成功失败或者是跳过 它使用的场景可以是用力失败,自动截图,失败记录日记,失败统计失败重跑等等。那么还有就是 paytest retest 啥 up, 还有就是 paytest retest 嗒 down, 它们的作用就是每条用力在执行前,执行后出发,那么使用场景就是每条用力独立,前至后至清理临时数据,登录登出使用。 还有一个就是 padtestcontition modifier test, 它的作用就是收集所有用力后修改筛选排序。用力, 那么它的场景可以有自动给用力添加标签,跳过指定用力重新排序,用力执行顺序。 那么如果我们在面试中问到了,我们可以这样说, python 的 钩子函数就是框架语言预留的回值入口,不用修改源码,只需实现对应的函数,程序运行到固定时机就会自动调用。 那常见的三类就有我们的魔术方法钩子,它就是用来管理对象的生命周期,还有系统全局钩子监听异常和程序退出框架。钩子像拍 test, download 都是大量用钩子来做前置和后置,还有拦截和扩展,那么它的作用就是解偶扩展功能, 处理公共逻辑,比如说日制呀,权限呀,拦截人员释放。那么大家可以评论区留言来说一下,平时在做自动化框架开发的时候,用过哪些函数钩子,一般都在什么业务场景下使用?

逼自己七天可玩拍照核心语法,你会发现自己真的超厉害,全程纯干货,无废话,建议赶紧收藏,全网很难找这么全的警告!本系列教程耗时五个月制作,共计两百六十八集,陪你系统的学习拍照核心语法,绝对是抖音最良心汉系统的拍单全套教程了,视频包含拍摄基础,软件安装, 使用函数讲解,项目实战等。看完教程,配合讲义,轻松上岸入职大厂。好,各位小伙伴,接下来呢,我们来学习一下数据录入, 那我们在前面的章节中,我们学习了这个输出啊,将我们的一些变量进行一些格式化的输出的操作。那这一讲呢,我们来介绍一下关于数据的录入, 我们经常会需要在很多的场景中,我们要进行一个啊,去通过,呃,我们用户输入我们的一些信息,然后把我们的这个数据啊哎读去到我们的程序中。好,那么大家想想,比如说在 咱们去上网的时候,哎,我们先去网吧,那网吧首先你想要去上网,你肯定要把你的身份证信息录入进来,然后他才能够去识别你的年龄,然后满足我们的这个成年的要求,你才能够去 给你开机,是吧?那同样的啊,还有像我们再去银行取钱,哎,你需要首先把我们的 用户名密码输入进来,然后验证正确呢,才能够进行下一步的操作。所以在很多的场景中,我们都需要去进行一个数据的一个输入操作。 好,那如何在 python 里面去做到通过我们的键盘输入把内容读取到我们的程序中呢?那于是我们就需要用到一个叫 input 语句啊,这里呢,我们就引入了 input 语句啊, 啊,我们可以通过音符的语句去进行一个键盘的一个输入啊,我们以上这以这个案例啊,比如说去银行取钱的这个案例, 好吧,那我们来话不多说,我们来演练一下啊,好,在这里呢,我们添加一个发送文件,就是我们零一四进行一个数据的录入啊, 在这儿呢,我们演示数据的一个录入,通过 input, 这是我们的一个提示 好,比如说我们去银行取钱,是吧?啊,比如说欢迎啊,请欢迎呢?呃,我们的一个 欢迎来到我们某某银行,是吧? 好,然后来到来,然后接下来他是不是要给你进行一个呃数,要你 去进行一个输入密码才能够去进行取款吧,对吧?那我们如果需要去进行密码的一个输入,那接下来呢,我们可以去提示啊,输入我们的秘密, 那我们就可以用到这个音普通语句。哎,这括号里面的呢,是你一致的内容啊,提示的内容,那比如说请输入你的取款密码啊, 好,那么大家想想,这个时候,呃,我们接收到了他的取款密码,假如说他输的一二三四五六啊, 好,那么我们不是应该要有一个变量去把它接收的,去把它输入的这个值给它保存起来, 对吧?好,那于是我们可以去定义一个变量,那我就直接叫密码 pewd 啊,去进行呢,接收输入我们的密码啊,可以定。 好,那么我们拿到这个密码以后,那比如说你可以去打印一下啊,你的 取款密码是多少?哎,我们是不是格式化输出一下,对吧?百分号 s, 为什么是百分号 s? 这里因为我们接收到的都是字母串啊,所以你不能够用百分号。第一去表示, 你千万别说,老师,密码不是数字吗?数字我们是不是都是整数呢?哎,不是的啊,因为你从我们的键盘录入到的任何内容都是我们的字串,所以你这里呢,不管你是数字还是以及文本,都用 百分号 s 啊。好,然后来个百分号,这里我们就可以用这个电量 p w d 啊,好,我们来运行一下, 好,大家在运行的时候,我们的程序是从上到下依次执行的,所以他是不是先执行第这一行,然后再执行呢?第四行执行到第四行的时候,哎,他就会有一个光标在这里等待你的一个输入 啊,等待你的输,因为,所以他现在是属于一个停留的状态,就停停留在此呢,等待你的输入啊,比如说我们取款密码,假如说啊,就来个一二三四五六啊, 好,然后回车大体看到是不是我们将这个密码做了一个格式化输出,当然这里我们只是做一个演示啊,谁会把密码给他打印出来呢?对不对?我们通常在这个 啊,开发过程中肯定要对它进行一些加密的处理,是不是?好,那咱们这里只是进行一个学习哈, 那芳芳老师,你说他都是自复串,那我们能不能去验证呢?对吧?那能不能去验证一下,比如说我们再打印一下啊,的这个类型是什么呢?是吧? 好,那我们这个地方咱们是不是要去给它 啊,就直接打印,直接打印一下我们的通过这个 type, 对 吧?什么 type 方法去把我们的密码的类型啊,我们给它打印出来,所以你可以看到这个类型好, 是不是 s t r, s t r 就 表示我们的字母串就是我们的字母串, 所以这里呢,我们要注意的季节就是我们从啊这个键盘录入的数据啊,都是属于呢,我们的字母串 啊,都是属于近看,如果你想要去做一些类型转换,那我们是不是啊需要用到前面所学的类型转换的方法呀, 对吧?比如说这里来,我们就要去从去网吧上网啊,我们要去录入学生的年龄,然后判断他是否年 好。来,大家可以把这个案例我们去做一下啊,好不好? 好,那这一讲呢,我们主要介绍的就是咱们的一个通过 input 语句啊,做一个数据的一个录入啊,这个括号里面是我们的提示的内容啊,提示的内容如果你不写,你可以你不写,能不能接受呢?也可以, 你看它执行到第五行的时候,是不是在这个地方等待你的一个录入 啊,等待你的输入,但是这样的话,咱们的体验的感受不是很好,对不对?体验的感受不是很好啊,因为你还是要提质一下人家输入的内容是什么啊?所以我们这里还是要加上啊,行输入这个一款秘密。 好,大家可以课后呢去练习一下。

拍放,每日学一个小知识,今日学习 os renames 函数。 os renames 函数的作用是地规重命名文件目录目标路径不存在的附目录会自动创建,也可地规删除空目录。 使用语法固定写法, o s v names s r c d s t 参数, s r c 是 原路径自扶串, d s t 是 目标路径自扶串。注意要点是,一、比 o s v name 更灵活,可自动创建附目录。二、 目标文件已存在仍会报错。下面将十秒案例展示,稍后提问。 提问, os rename 相比 os rename 核心优势是什么?知道答案的小伙伴把答案打在评论区。

那不知道大家发现没有啊,就是我们之前写的代码,它的数据都是提前在代码里写死的,我们输入的这个是几就是几,那你运行程序的时候,它这个值是不能改的, 如果我想要程序来直接接收从用户键盘输入的一个数据,然后比如说我输入名字啊,输入这个年龄啊,输入这个账号密码之类的,那么这样应该怎么做呢?那答案就是我们这节课的一个内容了,我们来看一下, 这里的话呢,我们就会用到一个今天学习的超级实用的函数,那叫做 input 函数, input 是 输入的意思,所以这是一个输入函数, 学完了这节课,你的程序就能够和用户进行互动,从而实现真正的人际交互啊,你的代码它就火起来了,而不是一个固定的死代码,所以这个 input 函数它就是用来接收从用户键盘输入的一个标准函数。 那么格式的话呢,大概是这样一个格式,我们第一个变量用来接收音符的,从键盘里输入的一个内容,这里的话你可以写一些提示的文字内容啊,写一些提示信息,你从键盘输入的数据, 然后的话呢,它会直接存到这个变量里,然后你可以直接打印这个变量,那么这样就能对到对应的一个结果了,你看以这个为例,在这里我们选音符函数,然后的话呢,呃,这里写一个提示词,就是请输你的名字,那么这样情况下,我们用一个 name 变量来接收这个从键盘输入的内容, 然后再使用 print 函数将这个 name 变量进行输出打印,所以你看到结果就是你输入什么,比如说我们输入个什么,我们输入个张三, 那么这里的话它有打印什么,它有打印来回车之后就会显示,你好,这个张三是由你从键盘输入的,那么自然我们打印的时候也就是这个你输入的内容, 所以这就是实际的一个情况,你输入什么它就打印什么,这个程序是不是更加灵活了,而不是一个固定死板的程序,那么这是一个这样的操作。当然我这里也给大家准备了按代码,大家可以看一下,我们来看第一个程序, 第一个程序就是这个只要一步函数获取,从键盘输入内容,然后这里写一个提示词,然后把接受的结果保存到 name 编里,再我们进行输入这个 name 编了,点击运行,请输入微信名,比如说李四回车,那么你看到打印的结果是,你好逗号,李四对不对?你输入什么就打印什么,我们再来 再换成张三, ok, 回车,那你看他就变成张三了,所以这个值是由你控制的,而不是固定的,明白了吧?这就是他的用处,那还有什么呢?来我们直接看,在这里的话呢,我们是请输入一个数字,并铺着接受这个数字,然后呢我们来输出这个数字,这个是很简单,来我们试一下啊, 在这我们把上面这个输入来看,这里取下住址 来数字,然后我们用 anm 这个变量接受这个数字,我们来试一下,我输入个三对特,那么可以看到它输入的数字就是三,虽然你看到打印的是三,那我们可以知道三是数字,但是这里是数字吗? 啊?不是,为什么呢?因为当我使用 type 函数来获取,当这个 anm 的 变量的时候,它的类型的时候,它是一个字母串的类型,它不是一个数字三, 而是一个字母三,所以这一点就非常的重要,因为你后续可能会涉及到数值的计算,你输入计算,如果输入这个字母算字母算,能做数字计算吗?他不能做字母计算,他只能做拼接, 所以你就会导致什么,比如说三字母三加字母三等于字母三十三,那这就很明显是一个错误计算, 三加三应该等于九吗?使用 input 从键盘接收到的数据,它都是一个字母类型的数据,这个注意一下啊。行,那接下来我们继续看下一点,就是我们来做一个简单计算,比如说我让他从键盘输入一个年龄,然后用 h 来接收这个输入的值,然后呢再用 h 进行数字加一,那做数值计算。 那行,我们来对比一下,来从键盘输入的一个数据,用 excel 输入,传到 a 字里边,然后呢我们再用 a 字加一就可以了。来试一下点击运行,假设我输个三,然后呢三之后就直接报错,这里报什么错呢?是类型错误。那你看这个提示,我们翻译一下, 只能加 str 与 str 连接,不能与 int 进行连接,所以你看我们从键盘输入的是个字母串,字母串怎么加吗?根本加不了,所以就报错了。那正确写法是什么呢?正确写法就这么写,就是 我呢音符的从键盘输入一个数字,我用 int 这个函数强制转类型,将字母串转成数值,这个 a 值就是一个数值了, 这样就成立了。来我们试一下,比如说我们从键盘输入一个十八回车,那么计算的结果是变成了十九,因为这个类型通过 int 函数强制转换,转换成一个整数了, 那么整数与整数之间就可以进行相加,这样就能做数值计算,懂了吧?当然我们这里也可以算一下,比如什么像浮点数啊,浮点数的话就这样你看,比如说我们这里从键盘输入你的这个身高是米元音符的,输入完之后就是个字母类型,但是我们用 float 强转,那么它就是一个浮点型数据。 这里我们做了一个数值计算,浮点数与浮点数相加,试一下啊,假设这个身高是比如说一点八米, 那么这样他就反应你的身高是一点八米,然后增加零点一米,之后呢是一点九五,这个没有没有省略啊,他这个位数很长 啊,也没有浮点型,这个精度很高啊,当然无所谓了,其实我们看到基本就是一点九米的样子,所以你看这样计算就不会出现数值错误。那么今天我们学的这个知识点就是这三个,总结下,第一个是一个音符的一个想要写的信息,第二个是音符的一个类型, 我们用 excel 函数获取的数据,就从这里面输入的数据,它都是一个字母串类型的,这个你需要记住。那如果说你要做不同类型的计算,你需要转类型,那比如说使用 excel 或者 file 函数 转化成对应的类型去进行计算数字类的,那如果是字母类型,这个就不用不用转了,对吧?假如我字母加字母,那就相连,所以这是我们这一部分的一个 啊总结,那我们这里用一个案例呢,来做一个汇总,做了一个交互式的用户信息获取的程序。首先我们这里写了四个音符的内容,首先第一行是音符的,请输入你的姓名,然后呢将用户输入的姓名从 name 编的里边,第二个呢是请输入你的年龄, 将输入的年龄数字成了这个 h 边里,大家注意这里做了一个 int 类型转换,转数值类型,然后第三的话呢,输入你的身高,然后使用 float 函数转成五点型数据,那就是请输入你所在的城市,然后的话呢,这里我们直接是个独创,就直接输入 ct, 接下来打印的时候呢,就是打印对应的一个数据了,我们试一下啊,来 运行全输入姓名啊,张三,这个年龄十八啊,身高呢一点八,然后呢城市呢?长沙回收好,运行完之后你会发现喏,我们从键盘输入的值,它就变成它打印的一个结果了,所以你输入不同信息,那么它就会打印不同的信息,它就是一个灵活可变化的一个程序。 好,那么关于这节课内容就简单给大家讲到这里,接下来我们来看一下一个课后小作业,那写一个交互式程序, 完成一些要求,第一个让用户输入姓名,第二个输入这个语文成绩要整数的啊,然后呢输入数学成绩也是整数的,然后并且计算这个总分也是成绩,总分需要说明你的变量要符合规范程序呢?这个成绩的计算啊,必须要是正确的,代码简洁不报错。那这就是我们今天的课后作业, 如果大家在练习过程中碰到类型错误,或者说这个输入的问题,那么可以在评论区留言,觉得课程有用的同学可以点赞、关注收藏。我们下节课来学习一个条件判断, e f e g, 让你的程序呢具有判断能力。

在拍声中,函数就像一台智能咖啡机,你告诉他做一杯拿铁,他就会自动加奶加糖加咖啡,给你一杯拿铁,你告诉他做一杯美式,他就会自动加水加冰加咖啡,给你一杯美式。输入指令, 指令创数给函数,函数在根据设定的动作执行,最后得到结果给你,你可以把这个根据不同指令进行匹配咖啡的品类再生成咖啡。这套动作 当做是一个整体或者是一个超级变量,普通变量只能存一个数字或一串文字,而超级变量里面存的是一整套动作。 当你使用这个超级变量时,它就会执行里面的动作,只需要给对应的参数,拿铁还是美式,它就自动根据你的参数做一杯咖啡。 视频最后小张会带大家制作一个智能问候机器人和一个简易计算器。我们先做一个自动根据名字打招呼的超级变量,也就是函数。当我们需要自己创建函数时,则需要使用 def 关键值来定义。比如我们看这行代码, 我们想定义一个打招呼的函数,他接收一个名字,然后答应你,好,某某先用 def 定义函数名和参数,函数提了一些要执行的代码,最后调用函数传入真实的名字, 这个时候程序就会答应你,好,小明,再答应你,好,小红。那如果说你想让函数算一个结果,并返回来给你用,比如写一个加法定义函数,名字叫 alt, 括号里面放需要传入的两个参数执行代码,等于用户给的两个参数相加,最后结果再传输给函数 out, 然后我们用 input 获取用户传入的两个数据, 这里前面要加上 int 进行类型转换。接着我们直接调用函数,把获取的数据一和二传给参数,最后再用 print 打印出结果。这个时候我们就完成了一个简单的加法函数,点击运行,我们输入数字就会打印出它们的和是多少,非常简单。 接下来我们将实操案例。题目一,制作一个智能问候机器人,根据当前时间返回不同的问候语。题目二, 制作一个简易计算器,接受两个数字和一个计算符,返回计算结果。首先我们做第一个,先用 import time 获取当前小时,然后用 d f 定义一个 greeting 函数,需要需要传入的信息是名字,再把现在的时间装到 hour 里面,再根据现在的时间进行判断早上下午还是晚上,再将值返回给 greeting, 最后打印出函数, greeting 里面加上我们传递的参数,运行就会得到对应的结果。接着我们制作一个简易计算器,定义一个 calculator 函数,接收三个参数, a, b 和 opp 计算符 用一幅判断运算符是加减乘还是除,然后返回相应的结果,如果运算符不认识,就返回运算符错误主代码写好了以后,我们再写测试代码,我们点击运行,再进行数据的传输,就能看到各种计算结果, 超级简单,几行代码就把计算器功能打包成一个函数,以后随时调用。作业来了,做一个公交车票价计算器,这个是收费标准,记得交作业下课。

你听过勾子函数吗?简单来说,它就是一种在不修改原始代码的情况下,在特定时机插入自定义逻辑的机制。看看这段代码, 在 application 类的 run 方法中,我们预留了一个执行注册函数的空隙,通过 add hook, 我 们可以把自己的函数挂到这个空隙里。这样做的好处是,你可以非常优雅地扩展功能,比如添加日期或权限检查,而不需要去动主逻辑的代码。 在很多著名的框架如 jango 或 py torch 中,钩子函数都是实现高度定制化的核心技术。钩子就是程序的扩展插槽,掌握了这种设计模式,你就能写出结构更清晰、更易于维护的高级代码。

你听说过函数是编程吗?一提到编程,很多人第一反应是写循环改变量,一步步指挥电脑干活。而函数式编程与这种命令式编程思路截然不同,它不执着于竹行下达指令,而是指描述目标,将逻辑拆成纯函数, 像搭积木一样组合使用。这是一种抽象程度很高的编程范式,以数学函数为核心,把计算看做函数的组合与求值,而非一步步执行指令。简单来说,命令式编程关注怎么做, 通过逐步指令改变程序状态,函数式编程关注做什么,用逻辑组合定义结果。函数式编程的核心概念主要有三点,一、纯函数是指没有副作用的函数,即不会修改外部状态或依赖于任何外部状态, 且给定相同的输入,总是返回相同的结果。就像数学函数 f x 等于二, x 输入三永远得六,不会影响其他数据。二、不可变性,数据一旦创建就不能修改,想更新数据不是改原值,而是生成新数据。 三、函数是一等公民。在函数式编程里,函数和数字字母串一样普通,可以作为参数传递,作为结果返回,也能存入变量或数组,由此就诞生了高阶函数,一行代码就能完成,便利筛选。聚合 函数式编程就是用这种更纯粹、更贴近数学思路的方式,把编程从一堆繁琐的指令操作变成清晰直白的逻辑表达,让代码更易读,也更稳健。

从今天开始,我们开启 python 实战入门系列,我会从业务案例入手,带着大家边做实战边学 python, 零基础也能学会。我会用 anaconda 自带的 jupiter notebook 进行演示,方便大家跟着练习。 我们做电商运营时,需要统计每个用户一共下过多少次单,快速地去筛选出高复购的优质老客户。 在 python 中可以用几行代码实现这个功能,我一边写一边把本期要学的知识点讲清楚。第一步, import 导入 pandas 工具,大家要记住, pandas 就是 专门用来处理表格数据的万能工具。 第二步, delete csv, 读取本地的订单 csv 文件,这是我们要学会的第二个技能,用 python 去读取本地表格。 第三步, groupby, 按照用户 id 分 组,再统计订单数量。分组统计是数据分析常用的操作。第四步,修改列名,再按下单次数从高到低排序, 运行完直接出统计表,用户 id 下单次数一目了然,高复购的客户会排在最前面,不用手动整理。以后做用户分层,老客运营直接套用这段代码就行。这是这期我们用到的所有函数,我们下期再见了。

拍放,每日学一个小知识,今日学习 os and link 函数。 os and link 函数的作用是删除指定路径的文件是 os remove 的 别名,功能完全一致,仅名称不同,无法删除目录 使用语法固定写法, os and link path 参数 path 未要删除文件的路径字符串,支持相对或绝对路径。 注意要点是,一、需导入 os 模块。二、删除不存在的文件会报错。三、删除前需确保有文件操作权限。下面将十秒案例展示,稍后提问。 提问, os link 和 os remove 的 核心功能是否完全相同?知道答案的小伙伴把答案打在评论区。

从零开始学 python 第五十二天,好,与此同时还会有其他的 firs 这个高阶函数。 这个好,高阶函数啊,它和 mac 也是一模一样的,因为它叫高阶函数,是因为它的这个小括号里面是接受一个参数传进来的,它可以去接受一个内置函数,或者说制定的函数,或者说是一个匿名函数,在第一个参数这个位置, 明白,所以它是高阶啊,别,别的不是高阶。好,然后这第二个呢?也是放一个序列好老师,看起来好像差不多,两个的写法,包括使用方法其实都是一模一样的,不同的点是在于什么呢? 不同的点是在于人家麦谱这个位置,它只能去放一个函数的作用,这作用发挥在序列身上。而咱们这个 fat, 它是可以去放一个表达式, 去放一个,呃,就是呃,放一个条件在这个位置,对序列里面的这个数据进行过滤,进行筛选啊,一般用于咱们这个数据清洗,后面比如说要去过滤一些数据,用于数据清洗这一块,效率还是挺高的。好,来看看。比如说我有一个需求, 有了麦普起头阵,我们后面的就比较比较快了啊,就是需求我们过滤掉咱们列表中的一个偶数,列表中的偶数。刚刚老师教大家了吧? 你如果说用我们这个列表推导式去进行过滤的话,后面直接去跟条件就 ok 的, 对吧?你会发现你要过滤,你要筛选,一定要涉及到某个条件才能达成这样的一个目的。好,那在高阶函数当中它也是同样如此。比如说你现在,呃,你比如说现在有一个, 有一个,呃,老师把刚刚的这个给他拿过来吧,这个用进去运行啊。没过滤的。老师,拿过来, 这个删掉,先去运行。对,把这一组数据给他拿过来啊,这组数据好,拿过来之后呢?来,我们回到怎么这么多?关掉。好,然后,然后给他粘贴过来,粘贴过来,这就是我们的一个目标数据给他进行一个保存,我们来个 number 好, 保存好了之后呢?来这将我的一个需求,就是将这个列表里面的啊偶数进行一个过滤。那保存下来的是什么?过滤,过滤掉。 呃,列表当中的一个偶数,那你要明白保留下来的是基数啊,你不要把偶数又保留下来了,所以你在写条件的时候严谨一点哦。好,你要去进行过滤操作,你要明白,麦普不行了,麦普它做不了过滤,得升级一下,用我们这个 fat 去做。那么它首先过滤的对象是谁? 是不是 number 直接给过来。那怎样过滤呢?你说你这个条件怎样去写呢?哎,老师,我知道条件就是一个 一个,呃,数据啊,就是一个数据,数据去和咱们这个二去取余数呢,它是个零, ok, 就是 这就是所谓的条件没有问题吧?好,你把这个往里面一丢, 往里面一丢, ok, 它不行。为什么它识别不了数据是谁?它识别不了数据来源于谁?明白?如果说你想要它去进行咱们这个识别的话, 啊,不等于,不等于。 sorry, 不 等于啊,不等于才能取偶数,不,呃,不然取的是基数啊。 sorry。 好, 那么你注意,我们现在为了让这个数据来源于这个 number, 数据来源于这个 number, 我 们用到一个什么呢? 在这个地方我们把它直接,哎,把它直接给它改写成什么?刚刚看这个地方,老师给他去做了一个比方吧,呃,在,在咱,咱们, 咱们哪个位置?刚刚,哎,讲讲哪个 x? x 他 是谁的时候,对不对?是不是 x? 哦, x 他 是谁的时候,刚刚大家知道 x 是 咱们这个序列当中的每一个数据,对吧?好,那么现在我们为了让这个数据和 number 给它关联在一起,是 number 里面的每个数据,得怎么办? 这个地方要改写,明白,这地方要改写,改写成一个函数,也是所谓的命名函数。把序,呃序列里面的每个数据拿过来,这个地方我们直接写一个 x 都可以,行参明随便去命名,然后 x 去干什么? x 去干什么? 干什么?这里已经 x 拿到了蓝宝里面的每个数字了, x 去干什么?是不是和二去取余啦?取余结果是不是不等于一个零?这就是所谓的 所谓的一个过滤条件,在命名函数的这个返回值作为一个式子,在这个位置做一个表达式,在这个位置,那么目标数据是在蓝宝第二个参数这个位置,你明白, 通过 number 表达式,通过这个函数可以去获取 number 这个虚列当中的每个数据保存在 x 当中,然后做一个,啊,咱们这个,呃,判断操作进入到咱们这个判断里面去嘛。好好, 那么最终达到的一个效果是什么呢?来呃,它也需要去过滤,呃,它也需要去强转啊,不然它打印出来的也是一个 fat 这样的一个内存地址,还得去强转一下,变成一个列表我们才能去看到啊,它过滤之后的这个结果,对吧?结果,结果三, 好,然后现在我们去打印结果三,然后右键去运行,看看过滤掉咱们这个偶数,大家有没有问题?这里 这有没有问题?像我们这个 fact, 它专门是用于咱们这个过滤的,专门是用于过滤的,它会去定义某一些条件,这个条件会作用在我们后面的这个序列当中的每一个数据身上, 它可以是一些判断,那么它呃条件怎么写?老师应该不需要跟大家去重述一下嘛?你比如说一些大于等于啊,呃什么?呃,判断是否相等啊?判断是否 啊?不等于啊,或者说像一些呃,呃,你之之前那个 if 后面跟的所有的条件其实都可以往后面丢,那么基本上是对于已经获取的这个 x 里面的这个数据进行的一些判断操作来个练习。你比如说我们去过滤啊,还是用于过滤,过滤出咱们这个字母串列表中呃,长度 它大于等于五的,咱们这个字符串。好,老师会给到大家一个目标啊, string list 目标列表,看一下大家能不能去写 这个 lisa, 来一个 lisa, 好, 然后我们来一个随便随,老师就随便去定一下这个呃长度这个名字了,啊 啊,随便写了,好了,就就这几个, ok, 好, 那么现在老师就想要去过滤一下长度, 大家能不能帮老师完成一下这个需求?就直接 list 小 括号 fat, 打起说 fat 这个小括号里面怎么去写,能够保证老师这个结果四,拿到的是过滤之后的一个列表,怎么写?来,大家直接就照着这个模字去画就可以了,来看一下大家有没有问题。 对,一个是加作用在身上,一个是加条件在身上。 对,这个同学很快啊,这个王普同学, ok 的, 还有没有其他答案? 看这里啊,看这里,它是,呃,咱们这个参数一的这个条件给它作用在我们这个参数二身上。 ok, 来看看,这里是放函数啊,放函数这个地方放函数,你放内置的呀?函数都可以,但是一定要带条件哦,去进行筛选的,这个动作这个老师都删了啊,这里没没别的答案了。是的, 我看看啊。小于小于等于五,这里是大于等于哦,大于等于五, ok, 都对的啊,都是对的。好,首先的话第一个放函数嘛,函数用,你可以用内置的去表表示,你也可以用咱们这个 number 去进行表示,也就是自定义的这个函数去去进行表示, 那么来,嗯,这个是参数一啊,参数一是函数要带条件的一个函数,然后,呃,咱们这个地方是一个数据数据,很明显你要对这个列表进行操作,那就得把这个列表数据放下来,对吧?放下来之后呢, 咱们是不是要操作咱们这个,呃,列表里面的每一个数据,通过 number 直接写你这个 x 指代的,它表示的就是从咱们这个,嗯,列表,这个列表数据里面自动会传递进来, 他行餐这个位置一定会接一个时餐进去,明白,有行餐一定会接时餐进去,这个时餐就是啊,咱们这个列表里面的,呃,每一个字母串他会自动传进来, 那不然的话没有时餐传到行餐里面来,这个语法就是不对的,他一定会传一个数据进来。明白,好,传进来之后呢?他是对我们这个类用类去求一下 x 的 一个长度,就是去求一下列表,呃,列表里面每个数据的长度, 这长度,你这样这样直接写的话不行吧?我们得写一个什么呢?条件,给它构成一个条件,进行一个过滤, ok, 那 么长度大于等于五,这里直接进行一个书写,大于等于五答, ok 吗?然后最终打印一下这个结果,右键去运行, 大于等于五的只有两个哈,只有两个一二,其他的就是三和四这个长度了。下集预告, reduce 高阶函数。

欢迎大家再次回到我们的课堂,接下来为大家演示活用 range, 我 们通过两个案例来给大家讲解。第一个,求指定整形数值的累加和。哎,有同学说这个我们刚刚实现过呀。 是的,想想看还有没有其他的使用方式呢?求整形数值的累加和, 那我呢,还是要一个 n, 你 给我输入一个数 enter a number, 输入完以后呢?大家想我们之前是用什么用 for 循环去做的对不对啊?但我们是不是还有一个 sum 内置函数呀?那我在这个 sum 函数里面直接让它给我生成这样的一个数行不行啊?你给我个 n, 然后我生成一个一到 n 加一,也就意味着它从一开始计算到 n。 好,生成完毕以后,大家注意,由于内置函数就叫 sum, 我 建议大家呢,在我们自定义变量的后面加一个下划线。 ok, 好, 那我们直接输出这个 sum, 点击右键给我一个一百,大家看五零,五零正确的 是不是比刚才代码更加的简洁呀?对的,这就是活用 ri 值了,跟我们之前的那只函数结合使用了。第二个需求,我们看求时之内的整形数值的平方, 求十之内整形数值的平方,或者叫获取吧,获取十之内整形数值的平方。首先你知道如何获取一个整形数值的平方吗?这个简单,比如说十之内,我就可以给一个一加 n 加一,但这个 n 呢?有可能会给我输入多少,给我输入一百,那怎么办呀?那这样子咱们可以做一个判断,如果这个 n 它大于十了,那我就让 n 等于十,什么意思啊?如果 n 就是 限制,限制 n 在十的范围内,看懂吧?如果 n 大 于十呢? n 就 等于十,你上面给我输一百,我也是十,好搞定,接下来呢,我就可以开始循环了, 循环过程当中我直接看一下这个 i, 大家看啊,你给我输一个一百,我这个 n 呢,最多也跑到十就结束了。是的, 平方简单, value 等于 i 乘 i, 或者还一种方式呢,你可以这样写,比如说 i 平方,这也可以,结果是一样的,那我需要定一个变量,把这个平方给它存进去 squares 空列表对不对?然后如果你把这个数字给我产生了,我就把这个数值添加到我这个 squares 平方的列表当中,最后我查看一下就可以了, squares, 点击右键运行,输入一个一百回车,朋友们看,一到一百的累加和是五零五零一到十之间的平方是一四九十六二五三三哎三六四九六四八幺一百 八幺九的平方,六四八的平方,四九七的平方都是正确的。所以这就是我们灵活使用睿值函数的一种方式, 我们可以结合内值函数共同使用,也可以在产生一个数以后进行计算,并且将结果呢存储到一个列表当中,后续就可以操作它了。关于我们的活用睿值,就给大家演示到这里。

各位好,我是阿牛哥老师,这节课我们来说一下函数,英文名 function。 什么是函数?函数是可以重复执行的语句框。函数的作用,第一点, 用于封装语句框,提高代码的宠用性。第二点,定义用户级别的函数。函数的语法结构, def 函数名,参数列表,语句框,也就是代码框, 函数的名字就是语句框的名字。函数名的命名规则与变量名相同,必须为 标示符。函数名是一个变量,不要轻易对其赋值。函数有自己的名字空间,要让函数处理外部数据,最好用 参数给函数传入数据。函数如果不需要传入参数,则参数列表可以为空。 语句部分不能为空,需要填充 pass 语句。下面我们来写个代码演示一下。定义一个函数名为 max, 此函数需要传递两个参数,打印出参数中最大的一个 d f 幺 max 参数是 a 和 b, print a 等于 a, print b 等于 b, if a 大 于 b, print a, else print b markmax, 转两个参数进去,转个一百。两百。在这里是调用 markmax 函数,这里再定义两个变量, 再一次调用 max 函数,把 x 和 y 作为参数传进去。嗯,代码写完了,我们来运行一下,因为这个函数全差是按顺序来的,这里一百是传给 a, 两百传给 b, 所以 后面这里打印的话, a 等于一百, b 等于两百。这里作比较,如果 a 大 于 b 就 等于 a, 否则就等于 b。 因为 a 不 大于 b, 所以 它就等于 b, 等于 b 就 等于两百。第二次, max max 函数调用,它是把选一个 x 和 y, 其实 x 把在输入之前,他先已经把把十复制给 x, 把二十复制给 y, 所以 这里的意思 就相当于就传了吗? max 十逗号二十。按照刚才来这样算,就是把十传给 a, 二十传给 b, 这样打印出来就是 a 等于十, b 等于二十,然后他们两个再做比较, a 大 于 b 吗?不大于, 所以就打印这个 else, 这一句 print b, 就 打印一个二十出来,在后面这里就是打印个二十。我们下面再讲一下函数的调用, 函数名小括号里面实际调用传递参数,这里这个实际调用传递参数简称为时差。说明,函数调用是一个表达式,如果函数 内部没有 return 语句,函数执行完毕后返回 non 对 象,如果函数需要返回其他的值,对象需要用到 return 语句。 再讲一下 return 语句语法, return 加一个表达式,这里是一个中文号,代表这个表达式可以省略作用,用于函数中结束当前函数的执行,返回到调用该函数的地方, 同时返回一个对象的引用关系。说明, return 语句后跟的表达式可以省略,省略后相当于 return now。 如果函数内没有 return 语句,则函数 执行完最后一条语句后返回 now, 相当于在最后加了一条 return now 语句,函数的调用能够返回一个对象的引用。 下面我们来写个代码演示一下 return 杠零幺点括号。首先定义一个 f n 的 函数, print hello a a a, 后面再打印 hello 四个 b, return 一 千, 然后再打印 hello 四个 c。 首先把这个 f n 函数的值复制给 c, 复制给 v 啊,再打印 v, 这里加一根分割线,用于前后做对比。再调用一次这个函数,这里连续调用两次,代码写完了,我们来运行一下。首先这函数里面是打印 hello 是 个 a, 接着打印 hello 是 个 b, 然后把这个一千返回来 f n 这个函数,然后把函数这个值复制个 v, 所以 这里打印出来这个 v 就 等于一千,接着就打印这根分割线,然后这 f n 再一次调用这个函数,就打印 hello 是 个 hello, 是 个 b。 这段代码的意思就是在 return 后面的这这条语句,它永远都不会打印。再来写一个 return 语句的代码,写一个函数 my d, d, 实现从键盘上输入两个数,返回这两个数的和。首先定一个 my d, d 的 函数 return a 加 b, 这里要用户从键盘上输入两个整数 a 等于 int input, 请输入第一个数 b 等于 int input, 请输入第二个数。 print, 你输入的两个数的和,是吗? idd, 好。 代码写完了,我们来运行一下,他这里提示你要输第一个数,我输一个五十六,第二个数二十三,他就跟我算出来你输入的两个数的和是七十九,好。

从零开始学 python 第四十七天,高阶函数本质上就是内置函数啊,理解一下它的一个用处就好了。确实在一些特殊情况之下蛮好用的。效率,执行效率挺高,人家要写很多行代码处理的一个问题,我直接一个函数搞定了,那么主要的一个,为什么叫它是高阶函数呢?主要的一个问,呃,原因是在于 看人,人家这个函数能够去接受参数,不接受,咱们能够去接受函数去作为参数进行使用啊,别的函数能不能别的那只函数太划 print, 好 像是不能去达到这样的效果,对不对?对,就相当于赋值一个变量,谁进去对,谁进去, 也就是你你的这个函数,谁你你谁去用他就谁会进去,明白谁会调用他,谁就会进去。好,来看一下,来,看一下。高阶函数的一个定义,老师就直接摆在这里了,没有大家想象的那么难,一听好像非常高级的样子,对不对?好,然后他这个地方 来,这个地方,老师先给大家去类举一下高级函数有哪些?其实啊,其实有蛮多,但是常用的老师就讲三个,第一个呢是卖图,第二个呢是我们这个,哎,写这个后面啊, 咱们这个 fata 这样的一个函数,然后后面还有一个 reduce 这个函数,三个函数。老师给大家介绍完这节课就到这里了啊,估计讲不完,讲不完下节课再说。 好,首先呢,先讲咱们这个麦普,麦普这个函数麦普的话他怎么去用呢?直接上操作了啊,学了那么多函数,呃,那只函数了,首先第一个参数他要,他会放一个函数进去,你看他会接受函数作为参数去用吧,第一个参数就会直接放,然后第二个参数呢?他会放缩列, 会放缩列好来,直接跟着这个列表,我们,呃,跟着这个需求,我们来做一个势利吧,势利 这个写法,我们做一个试例啊。呃,试例,你比如说将我们列表中的每个元素给它转为大写,我看一下啊,咱们课间当中有没有这个需 求?求平方,这个平方也可以嘛?这里定一个 number, 然后去求平方吧。好,这个基于老师先把这个讲完再去套咱们这个 number 啊,不然的话直接一上来套就有点发蒙了。然后,呃,老师,先来一个列表吧, 列表中框里面呢?我们去放一个,哎,刚刚不是有吗?直接给他拿过来,就他,好那粘贴过来。老师,这个列表就随便去定一打啊, 改个 list 一, ok, 好, 存好之后呢?现在我们就直接可以去用了,直接是 mac 来上。好,第一个就是接函数,第一个接函数,函数是不是想要去将列表当中的这个这个数据,这个数据啊?这个元素也就是这个数据给他转为转为一个大写,大家还记得 mac 打错了呵, sorry, 好, 大家还记得,就是把咱们,哎,呵, mac, 咱们把咱们这个数据列表中的每个数据就所谓的这个字母串转为大写,有一个函数,不知道大家有记不记得字母串转为大写用哪个函数?对,专用一个函数啊?在我们这个 啊, apple 啊,是这么念的吧。然后老师给大家去演示一下,先演示一下给大家看看,比如说我们这个苹果,咱们单独挑出来。好,这个苹果想要转换成一个大写,我们就打点去调用就 ok 了。 最后看看它转换之后的这个结果来 print 去进行这个打印,转换之后的这个结果打印看看是不是就转大写了,对吧?好,在这里的话我们依次就是拿进来,想要去转的话,直接啊,直接就是 string string, 然后把我们这个 apple 给它放过去就 ok 了。 这个这个函数不需要去带,不需要去带什么呢?带咱们的这个小括号,然后,哎,老师,你现在是能够转出来一个结果给我去看了吗?现在能转出来一个结果给我去看了吗?比如说我保存一下这样子就可以了吗?不来注意这里呢?是我们放好的一个转换函数, 还得小挂,呃,就多少隔开再放一个,谁再放一个是谁还得把序号放进去,那不然这个 string 定位什么呢?这个 string 其实定位到的就是列表当中的字串数据,你不把列表放下来,人家怎么把数据拿下来进行转换码,数据都没有,对不对? 是不是?好, string 是 什么呢? string 是 咱们 list, 就是 说后面这个序号中,你不管是哪个序号啊?是序号中 的四幅串数据,它会把它提,它会把它拿出来的,它会把它拿出来,你看它里面是不是有一二三四四个数据?好, string 就 会,呃,把里面的这个,这个,这个这四个字母串数据拿出来,然后调用一个 apple 进行一个转换,这大家 ok 吗? 好,转换之后来最后我们来看一下这个结果嘛。结果,呃,这个第八行就注册到了啊。对,四幅串类型的一个数据给它提取出来嘛。 好,这里很明显就是我们这个 mac, 它有个内存地址。好,老师,能用,但是好像跟刚刚的匿名函数一样,不是这么用的,对吧?对,你如果说这样子去用的话,不行啊,你这样直接打印,其实用法是 ok 的, 但是你这里打印结果的话不行,它打印的是内存地址。哦,还,这里打印的是, 嗯, mac 这个函数调用之后的内存地址,之后的内存地址,所以要怎么去用它呢?对, 你要把它转换成一个 least 这样的一个类型,你才能看到最后转换出来的一个结果,因为你的目标是不是将列表里面的数据转换成一个大写啊?那转换成大写的一个结果不还是个列表?来 u 键去运行看一下,这就是我们最终打印的一个结果, 大家 ok 吗?这个里面呢,我们先不纠结咱们这个 string 点啊,咱们这个 apple, 那 么大家要去纠结的是什么呢? mac 这个函数,它有个使用第一个参数,放的是一个函数,这个函数将来会作用在第二个数据,也说序列当中。来总结 mac, 它的一个作用是什么呢?函数, 函数,你定义的函数也好,还是内置的函数也好?它的一个它的一个功能,呃,会作用在呃列表中的每个数数据上。 ok, 列表,呃,序列啊,你不一定是列表,你可以是字典啊,等等的。 好,这里大家 ok 吗?这里是一个转换了,这个是 mac 的 一个使用,大家 ok 吗? 对,它就是把字母串给它提取出来,然后给它转换成是一个大写,转换成是一个大写,因为 opera 它起到一个作用就是一个大写, 对吧?好,然后老师讲完这节课咱们就下课,好不好?这节课的一个难点还挺多的,大家课后先去周结一下,讲完这节课呢,我们就讲完这个点,咱们就下课把,大家课后去把咱们这个呃 fatter, 包括我们这个 regos 去周结一下,下节课老师再给它去补充,好吧? 嗯,呃,然后老师讲到了命令函数,一定程度上他会去,就是第二种,第二种使用方式会去结合高阶函数去进行咱们这个应用。来看看看题目, mac 当中呢?他的一个函数他接,呃,他是接受一个函数,这个函数会应用在序列当中的每个元素当中。比如说我有这么一个 举手来直接粘贴一下,这是咱们呃,课间当中的一个例子。首先起手就是一个列表,数字列表没问题吧?数字列表好,那么他是想干什么呢?需求啊,需求, 他是想要将列表当中的每个元素去求平方。好,你会发现此时此刻我是否要去把求平方这个操作打包成一个函数?好,那你会怎么去写呢?你会 先把 mac, 你 结合 mac 去用嘛?但是不一定结合 mac 哦,你后面你学了其他函数,你可能会有更好用的,对吧?不一定,但是你此时此刻结合了 mac。 好, 那么 mac 的 第一个你放一个函数,第二个放去列。很明显,我的目标去列就是 numbers, 就是 要对它里面的每个数据求平方,一的平方一,二的平方四,三的平方九,四的平方十六,这个不多说,对吧?好,这个数据到位了, 函数有没有到位?没有啊,函数你可以自己去定义,定义成一个常规函数,然后把那个常规函数拿下来去进行一个调用,那你此时此刻代码就比较多了,那么通常在这里直接就是像这种比较简短的一一种需求实现, number 写法就会直接上了, number 写法就会直接上了。好,它会 先写一个 x, x 就 相当于定义的那个常规函数的行参,也就是说你传进来这个 x 是 什么?我将来会返还一下 x, 它的这个平方给你,这个是它的一个,它的一个什么 平方吧?它的一个平方返回值平方。求取,这答 ok 吗?好,最后来拿到的这个结果的话, 它依旧是一个 mac 函数。呃,它依旧是一个 mac 函数的一个内存地址,给大家注视一下,删掉吧。直接删掉,然后给大家去运行看看。依旧是一个内存地址,通常情况之下直接就是一个 list, 把咱们这个 mac 函数就内存地址给它包了。最后将一个 啊元素就是数据平方值的一个列表返还给我,下集预告条件表达式。