微信创建网站应用程序,凡科建站有哪些弊端,南宁世尊商贸网站建设,重庆网站建设公司排名最近我在学 Python 编程#xff0c;今天可算是狠狠钻研了一把 Python 里的函数#xff0c;感觉脑袋里的知识又充实了不少#xff0c;赶紧来记一记。 一、Python函数基础概念
#xff08;一#xff09;pass语句#xff1a;代码块的“占位符”
在编写代码时#xff0c;有…最近我在学 Python 编程今天可算是狠狠钻研了一把 Python 里的函数感觉脑袋里的知识又充实了不少赶紧来记一记。 一、Python函数基础概念
一pass语句代码块的“占位符”
在编写代码时有时我们需要在代码块中预留位置但暂时不想执行任何操作这时pass语句就派上用场啦。它就像是一个空语句默默地占据着代码的位置让代码结构保持完整。比如在条件语句、循环语句或者函数定义中都可以使用pass语句来占位。
二函数定义与调用代码复用的关键
函数是一段可复用的代码块专门用来执行特定的任务。定义函数时我们要使用def关键字就像给这个“小助手”取了个名字然后在后面加上参数列表如果有的话和代码块。调用函数也很简单直接使用函数名并传入相应的参数就可以啦。函数可以接受参数还能返回结果返回结果时使用return语句。
二、参数传递灵活赋予函数“能量”
一位置实参按顺序传递的“接力棒”
位置实参是最常见的参数传递方式它按照参数在函数定义中的位置顺序进行传递。就像接力比赛中的接力棒每个实参都要准确地交到对应的形参“手中”顺序不能错数量也要对应。这种方式要求实参的位置必须与形参完全一致是必须传递的参数。
二关键字实参清晰明确的“指令”
关键字实参通过指定形参的名称来传递实参这样做的好处是让函数调用更加清晰易懂。我们可以按照任意顺序传递关键字实参而且它还能和位置参数混合使用呢不过要记住位置参数得放在前面。在只需要传递部分参数的情况下关键字实参就非常方便啦。
三默认实参贴心的“预设方案”
在定义函数时我们可以给形参设置默认值这就是默认实参。有默认值的形参要放在没有默认值的形参后面哦。调用函数时如果不传递这个参数它就会使用默认值要是传递了实参实参的值就会覆盖默认值。默认实参常用于设置一些可选参数让函数的使用更加灵活。
四可变数量实参包容万物的“收纳盒”
可变数量实参允许我们向函数传递任意数量的实参。其中非关键字实参会被封装成一个元组关键字实参会被封装成一个字典。可变数量实参可以和其他参数类型混合使用不过位置参数还是要放在前面。
三、作用域变量的“活动范围”
一作用域分类各司其职的“小天地”
全局作用域在函数外部定义的变量就处于全局作用域就像住在“大房子”里的居民程序的各个地方都能访问到它们。局部作用域函数或类方法内部定义的变量在局部作用域中这是它们自己的“小房间”只有在所属的代码块内才能被看到和使用。嵌套作用域当代码块层层嵌套时就会产生嵌套作用域。内部代码块可以访问外部代码块的变量就像在嵌套的房间里里面的人可以看到外面房间的东西但外面的人看不到里面的。内置作用域这是Python预先定义好的变量和函数名的“领地”我们可以直接使用非常方便。
二作用域访问规则严格遵守的“规定”
局部作用域的变量可以访问局部、嵌套和全局作用域的变量嵌套作用域的变量能访问嵌套和全局作用域的变量但不能修改全局变量全局作用域只能访问全局变量没办法直接修改局部和嵌套作用域的变量。如果想要在函数内部修改全局变量就得使用global关键字。
四、特殊函数强大而独特的“编程利器”
一匿名函数lambda函数小巧灵活的“短兵器”
匿名函数也就是lambda函数它没有函数名通常只包含一个表达式。这种函数就像一把小巧灵活的“短兵器”适合用来创建一些简单的函数在需要的地方直接使用非常便捷。
二map函数高效的“批量处理器”
map函数是Python的内置函数它就像一个高效的“批量处理器”可以对可迭代对象比如列表、元组中的每个元素应用同一个函数然后返回一个结果列表。
三filter函数精准的“筛选器”
filter函数就像一个精准的“筛选器”它能从可迭代对象中筛选出满足特定条件的元素最后返回一个迭代器里面装着筛选出来的元素。
四reduce函数强大的“累积计算器”
reduce函数有点像一个强大的“累积计算器”它会将指定的函数应用于可迭代对象的前两个元素然后用计算结果再和下一个元素继续应用这个函数不断累积计算。不过使用reduce函数需要从functools模块导入哦。
五递归函数自我调用的“解题高手”
递归函数是一种特殊的函数它通过调用自身来解决问题。就像一个聪明的“解题高手”把大问题一步步分解成小问题。递归函数由终止条件和内部调用自身这两部分组成。使用递归函数时要特别注意一定要有终止条件避免出现无限调用的情况而且每次调用都要朝着终止条件靠近。
五、实战练习在实践中成长
一课堂练习小试牛刀
递归实现阶乘计算要求使用递归函数实现输入5输出5 * 4 * 3 * 2 * 1的值。这就需要我们巧妙地运用递归函数的特性通过不断调用自身逐步计算出阶乘的结果。猴子吃桃问题这个问题也可以用递归的方法来解决。我们要根据猴子每天吃桃的规律从后往前推算出第一天桃子的数量。
二作业挑战提升技能
斐波那契数列编程用递归编程实现斐波那契数列这是一个经典的递归应用场景。斐波那契数列的特点是从第三项开始每一项都等于前两项之和通过递归函数可以很好地实现这个逻辑。 计算5个人年龄问题根据每个人年龄之间的关系使用递归函数计算出第5个人的年龄。这需要我们理清年龄之间的递归关系准确地编写递归函数。 汉诺塔扩展作业汉诺塔问题是一个更具挑战性的递归应用。我们要通过递归算法实现将一叠盘子从一个柱子借助另一个柱子移动到第三个柱子并且要遵循特定的规则。 Python函数是Python编程中非常重要的一部分掌握了函数的各种知识我们就能编写出更加简洁、高效、灵活的代码。希望大家通过今天的学习对Python函数有更深入的理解在编程的道路上不断进步 日记 总结
一开始接触函数基础概念的时候我就被pass语句给绊了一下。这pass语句你说它啥都不干吧但又不能少了它。就好比盖房子有些地方暂时还没打算装修但又不能让它空着不管pass语句就像是给这个地方放了个 “占位牌”先占着位置等以后想好了再填内容。在条件语句、循环语句或者函数定义里它都能发挥这个作用虽然不起眼但还挺重要的。
函数的定义和调用也挺有意思。定义函数就像是打造一个多功能小工具用def关键字给它取个名字再根据需要给它装上不同的 “零件”—— 参数。这个小工具做好了调用它的时候就像拿起工具开始干活把需要的数据作为参数传进去它就能帮我们完成特定的任务。要是这个任务完成后有结果就用return语句把结果 “交出来”。
说到参数传递这里面的门道可多了。位置实参就像是排队大家得按照顺序来一个萝卜一个坑顺序和数量都不能错不然这个 “小工具” 可能就没法正常工作。关键字实参呢就灵活多了它可以不按顺序来只要喊对形参的 “名字”把数据传过去就行就像在一群人里直接喊名字找对应的人这样函数调用起来就清晰多了。而且它还能和位置参数一起用不过位置参数得站前面。
默认实参就更贴心啦就像给 “小工具” 设置了一些常用的默认配置。定义函数的时候给形参设置好默认值调用的时候要是不想改这个配置就可以直接用默认的要是有特殊需求再传个新的值进去把默认值替换掉就行。这在设置一些可选参数的时候特别方便感觉就像是给我们开了个 “便捷通道”。
还有可变数量实参这简直就是个 “大胃王”能装下任意数量的实参。非关键字实参传进来后会被打包成一个元组关键字实参则会被装进一个字典里。它还能和其他参数类型一起搭配使用不过位置参数还是得打头阵。
函数的作用域也让我费了不少脑筋。全局作用域里的变量就像是住在 “大别墅” 里整个程序都能找到它们随时可以用。局部作用域的变量就像是在每个 “小房间”函数或类方法内部里的私人物品只有在这个 “小房间” 里才能看到和使用。嵌套作用域有点像 “套娃”里面的 “小套娃”内部代码块能看到外面 “大套娃”外部代码块的东西但外面的看不到里面的。
内置作用域就像是 Python 提前准备好的 “百宝箱”里面的变量和函数名我们直接就能用可方便了。不过不同作用域之间的访问规则得记清楚局部作用域能访问好多地方的变量但嵌套作用域不能随便修改全局变量全局作用域也动不了局部和嵌套作用域的变量。要是真想在函数里改全局变量那就得请出global关键字来帮忙。
特殊函数这部分我觉得匿名函数lambda函数特别酷它没有名字就像个神秘的 “小刺客”通常就一个表达式简单又灵活适合在一些小场景里快速解决问题。
map函数是个高效的 “流水线工人”能把同一个操作应用到可迭代对象的每个元素上然后整齐地返回一个结果列表。filter函数则是个严格的 “质检员”从可迭代对象里挑出符合条件的元素组成一个新的迭代器。
reduce函数就像个厉害的 “数学家”能把函数一步步应用到可迭代对象的元素上不断累积计算不过用它得先从functools模块把它 “请” 出来。递归函数最神奇它能自己调用自己就像一个人能不断地给自己布置新任务直到完成最终目标。但用它的时候得小心一定要有个终止条件不然就像掉进了一个无尽的循环陷阱里而且每次调用都得离这个终止条件更近一点。
今天还做了不少练习和作业。课堂上用递归函数计算阶乘一开始我完全摸不着头脑后来慢慢理解了递归的逻辑顺着这个思路就把代码写出来了。还有猴子吃桃的问题也是用递归解决的从最后一天剩下的桃子数往前倒推算出第一天的桃子数量解开这个问题的时候可太有成就感了。作业里有斐波那契数列的编程、计算 5 个人年龄的问题还有汉诺塔的扩展作业这些可把我折腾坏了但也让我对递归函数有了更深的理解。
今天学的这些内容虽然有点烧脑但学会之后真的超有成就感。感觉自己在 Python 编程的路上又迈进了一大步以后还要继续加油多练习把这些知识掌握得更牢固