公司网站制作机构邢台做网站的
news/
2025/10/8 0:07:14/
文章来源:
公司网站制作机构,邢台做网站的,双桥seo排名优化培训,网站备案 法规阅读目录一 数学定义的函数与python中的函数初中数学函数定义#xff1a;一般的#xff0c;在一个变化过程中#xff0c;如果有两个变量x和y#xff0c;并且对于x的每一个确定的值#xff0c;y都有唯一确定的值与其对应#xff0c;那么我们就把x称为自变量#xff0c;把…阅读目录一 数学定义的函数与python中的函数初中数学函数定义一般的在一个变化过程中如果有两个变量x和y并且对于x的每一个确定的值y都有唯一确定的值与其对应那么我们就把x称为自变量把y称为因变量y是x的函数。自变量x的取值范围叫做这个函数的定义域例如y2*xpython中函数定义函数是逻辑结构化和过程化的一种编程方法。1 python中函数定义方法23 def test(x):4 The function definitions5 x16 return x78 def:定义函数的关键字9 test函数名10 ()内可定义形参11 :文档描述(非必要但是强烈建议为你的函数添加描述信息)12 x1泛指代码块或程序处理逻辑13 return定义返回值调用运行可以带参数也可以不带函数名()补充1.编程语言中的函数与数学意义的函数是截然不同的俩个概念编程语言中的函数是通过一个函数名封装好一串用来完成某一特定功能的逻辑数学定义的函数就是一个等式等式在传入因变量值x不同会得到一个结果y这一点与编程语言中类似(也是传入一个参数得到一个返回值)不同的是数学意义的函数传入值相同得到的结果必然相同且没有任何变量的修改(不修改状态)而编程语言中的函数传入的参数相同返回值可不一定相同且可以修改其他的全局变量值(因为一个函数a的执行可能依赖于另外一个函数b的结果b可能得到不同结果那即便是你给a传入相同的参数那么a得到的结果也肯定不同)2.函数式编程就是先定义一个数学函数(数学建模)然后按照这个数学模型用编程语言去实现它。至于具体如何实现和这么做的好处且看后续的函数式编程。二 为何使用函数背景提要现在老板让你写一个监控程序监控服务器的系统状况当cpumemorydisk等指标的使用量超过阀值时即发邮件报警你掏空了所有的知识量写出了以下代码1 while True2 if cpu利用率 90%:3 #发送邮件提醒4 连接邮箱服务器5 发送邮件6 关闭连接78 if 硬盘使用空间 90%:9 #发送邮件提醒10 连接邮箱服务器11 发送邮件12 关闭连接1314 if 内存占用 80%:15 #发送邮件提醒16 连接邮箱服务器17 发送邮件18 关闭连接上面的代码实现了功能但即使是邻居老王也看出了端倪老王亲切的摸了下你家儿子的脸蛋说你这个重复代码太多了每次报警都要重写一段发邮件的代码太low了这样干存在2个问题代码重复过多一个劲的copy and paste不符合高端程序员的气质如果日后需要修改发邮件的这段代码比如加入群发功能那你就需要在所有用到这段代码的地方都修改一遍你觉得老王说的对你也不想写重复代码但又不知道怎么搞老王好像看出了你的心思此时他抱起你儿子笑着说其实很简单只需要把重复的代码提取出来放在一个公共的地方起个名字以后谁想用这段代码就通过这个名字调用就行了如下def 发送邮件(内容)#发送邮件提醒连接邮箱服务器发送邮件关闭连接while Trueif cpu利用率 90%:发送邮件(CPU报警)if 硬盘使用空间 90%:发送邮件(硬盘报警)if 内存占用 80%:发送邮件(内存报警)你看着老王写的代码气势恢宏、磅礴大气代码里透露着一股内敛的傲气心想老王这个人真是不一般突然对他的背景更感兴趣了问老王这些花式玩法你都是怎么知道的 老王亲了一口你儿子捋了捋不存在的胡子淡淡的讲“老夫年少时师从京西沙河淫魔银角大王 ” 你一听“银角大王”这几个字不由的娇躯一震心想真nb,怪不得代码写的这么6, 这“银角大王”当年在江湖上可是数得着的响当当的名字只可惜后期纵欲过度卒于公元2016年 真是可惜了只留下其哥哥孤守当年兄弟俩一起打下来的江山。 此时你看着的老王离开的身影感觉你儿子跟他越来越像了。。。总结使用函数的好处1.代码重用2.保持一致性易维护3.可扩展性三 函数和过程过程定义过程就是简单特殊没有返回值的函数这么看来我们在讨论为何使用函数的的时候引入的函数都没有返回值没有返回值就是过程没错但是在python中有比较神奇的事情1 def test01():2 msghello The little green frog3 print msg45 def test02():6 msghello WuDaLang7 print msg8 return msg91011 t1test01()1213 t2test02()141516 print from test01 return is [%s] %t117 print from test02 return is [%s] %t2总结当一个函数/过程没有使用return显示的定义返回值时python解释器会隐式的返回None所以在python中即便是过程也可以算作函数。1 def test01():2 pass34 def test02():5 return 067 def test03():8 return 0,10,hello,[alex,lb],{WuDaLang:lb}910 t1test01()11 t2test02()12 t3test03()131415 print from test01 return is [%s]: %type(t1),t116 print from test02 return is [%s]: %type(t2),t217 print from test03 return is [%s]: %type(t3),t3总结返回值数0:返回None返回值数1:返回object返回值数1:返回tuple四 函数参数1.形参变量只有在被调用时才分配内存单元在调用结束时即刻释放所分配的内存单元。因此形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量2.实参可以是常量、变量、表达式、函数等无论实参是何种类型的量在进行函数调用时它们都必须有确定的值以便把这些值传送给形参。因此应预先用赋值输入等办法使参数获得确定值3.位置参数和关键字(标准调用实参与形参位置一一对应关键字调用位置无需固定)4.默认参数5.参数组五 局部变量和全局变量在子程序中定义的变量称为局部变量在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时在定义局部变量的子程序内局部变量起作用在其它地方全局变量起作用。1 namelhf23 def change_name():4 print(我的名字,name)56 change_name()789 def change_name():10 name帅了一笔11 print(我的名字,name)1213 change_name()14 print(name)15161718 def change_name():19 global name20 name帅了一笔21 print(我的名字,name)2223 change_name()24 print(name)六 前向引用之函数即变量1 def action():2 print in the action3 logger()4 action()5 报错NameError: global name logger is not defined678 def logger():9 print in the logger10 def action():11 print in the action12 logger()1314 action()151617 def action():18 print in the action19 logger()20 def logger():21 print in the logger2223 action()七 嵌套函数和作用域看上面的标题的意思是函数还能套函数of course1 name Alex23 def change_name():4 name Alex256 def change_name2():7 name Alex38 print(第3层打印,name)910 change_name2() #调用内层函数11 print(第2层打印,name)121314 change_name()15 print(最外层打印,name)此时在最外层调用change_name2()会出现什么效果没错 出错了 为什么呢作用域在定义函数时就已经固定住了不会随着调用位置的改变而改变1 例一2 namealex34 def foo():5 namelhf6 def bar():7 print(name)8 return bar910 funcfoo()11 func()121314 例二15 namealex1617 def foo():18 namelhf19 def bar():20 namewupeiqi21 def tt():22 print(name)23 return tt24 return bar2526 funcfoo()27 func()()八 递归调用古之欲明明德于天下者先治其国欲治其国者先齐其家欲齐其家者先修其身欲修其身者先正其心欲正其心者先诚其意欲诚其意者先致其知致知在格物。物格而后知至知至而后意诚意诚而后心正心正而后身修身修而后家齐家齐而后国治国治而后天下平。在函数内部可以调用其他函数。如果在调用一个函数的过程中直接或间接调用自身本身1 def calc(n):2 print(n)3 if int(n/2) 0:4 return n5 return calc(int(n/2))67 calc(10)89 输出10 1011 512 213 1 递归问路递归特性:1. 必须有一个明确的结束条件2. 每次进入更深一层递归时问题规模相比上次递归都应有所减少3. 递归效率不高递归层次过多会导致栈溢出(在计算机中函数调用是通过栈(stack)这种数据结构实现的每当进入一个函数调用栈就会加一层栈帧每当函数返回栈就会减一层栈帧。由于栈的大小不是无限的所以递归调用的次数过多会导致栈溢出)堆栈扫盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html尾递归优化http://egon09.blog.51cto.com/9161406/1842475 二分查找九 匿名函数匿名函数就是不需要显式的指定函数1 #这段代码2 def calc(n):3 return n**n4 print(calc(10))56 #换成匿名函数7 calc lambda n:n**n8 print(calc(10))你也许会说用上这个东西没感觉有毛方便呀 。。。。呵呵如果是这么用确实没毛线改进不过匿名函数主要是和其它函数搭配使用的呢如下1 l[3,2,100,999,213,1111,31121,333]2 print(max(l))34 dic{k1:10,k2:100,k3:30}567 print(max(dic))8 print(dic[max(dic,keylambda k:dic[k])])1 res map(lambda x:x**2,[1,5,7,4,8])2 for i in res:3 print(i)45 输出6 17 258 499 1610 64十 函数式编程峰哥原创面向过程解释函数的参数传入是函数吃进去的食物而函数return的返回值是函数拉出来的结果面向过程的思路就是把程序的执行当做一串首尾相连的函数一个函数吃拉出的东西给另外一个函数吃另外一个函数吃了再继续拉给下一个函数吃。。。例如用户登录流程前端接收处理用户请求-》将用户信息传给逻辑层逻辑词处理用户信息-》将用户信息写入数据库验证用户登录流程数据库查询/处理用户信息-》交给逻辑层逻辑层处理用户信息-》用户信息交给前端前端显示用户信息函数式编程http://egon09.blog.51cto.com/9161406/184247511 高阶函数满足俩个特性任意一个即为高阶函数1.函数的传入参数是一个函数名2.函数的返回值是一个函数名 map函数 reduce函数 filter函数 总结十一 内置函数 View Code内置参数详解 https://docs.python.org/3/library/functions.html?highlightbuilt#ascii十二 本节作业有以下员工信息表当然此表你在文件存储时可以这样表示1 1,Alex Li,22,13651054608,IT,2013-04-01现需要对这个员工信息文件实现增删改查操作可进行模糊查询语法至少支持下面3种:select name,age from staff_table where age 22select * from staff_table where dept ITselect * from staff_table where enroll_date like 2013查到的信息打印后最后面还要显示查到的条数可创建新员工纪录以phone做唯一键staff_id需自增可删除指定员工信息纪录输入员工id即可删除可修改员工信息语法如下:UPDATE staff_table SET deptMarket WHERE where dept IT注意以上需求要充分使用函数请尽你的最大限度来减少重复代码
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930987.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!