文章目录
前言
简单的python复习第五天:
不是用来教学的,上班没劲,主打一个本科毕业没竞赛没技术证一般路过路人,感觉停下学习的日子有焦虑症和死感,遂写点学习日记流水账来维持脑子一般性生命活动(?。
五补:第五天了(一个爬去上班的星期一
Python操作基础内容
一、Python中的函数
函数是一段封装好某种功能的代码块
,在需要的地方调用就可以使用被封装的功能。封装好的函数类似于工具箱里的工具,需要使用的时候拿出来用。
比如我拿出锤子来锤东西它才会发挥作用,不用锤子时它就是把锤子,不会变成别的东西或自己工作。
函数也是一样,封装好的代码可以自由命名为"某某某"(但一般根据代码作用来命名以免调用混乱,因此也有一些函数命名的规则),调用它的时候它就会在相应的地方发挥作用,不调用的时候函数内容不会更改,函数也不会自己运行。
1.内置函数
在Python中有内置函数和自定义函数,内置函数有些我们很常用的比如print()、type()、range()等都是Python的内置函数,这些Python中已经封装好的函数,比如输出print()就能按需拿来就用而不必要去考虑“输出”这个方法要怎么做到。
2.定义一个函数
自己在编写程序时,有些在特定场景下需要多次使用的代码没有特定的内置函数去实现,这时候就可以自己定义一个函数来使用。
定义一个命名函数
的格式如下:
def SayHello():
print("早八人!早上好!")
这里SayHello就是自己定义的函数名,在定义函数名也有一些准则:
函数名最好是体现函数功能的词
由字母、下划线、数字组成,且不能以数字开头
不与关键词重名,且不出现除了下划线以外的特殊符号
调用函数
使用刚才定义的函数:
SayHello()
得到结果
早八人!早上好!
通过调用SayHello(),表示在此处运行函数中的代码。
定义好的函数可以多次调用
SayHello()
SayHello()
得到
早八人!早上好!
早八人!早上好!
调用几次函数中的代码就会执行几次
为函数设置参数
在定义函数时,有时也会为了丰富函数功能为函数设置参数。这些传参函数能根据不同的传入数据,输出不同的结果。参数主要有实参
和形参
两种概念。
实参
实参其实就是“具体数据”,是调用函数时要传递给函数形参的参数。
形参
形参是其实是一个定义的变量名,是承载实参的“容器”。
传递过程也和变量赋值类似,从实参传递到形参,也是一个将数据“装进”变量的过程
还是刚才SayHello的函数
def SayHello(people):
print(f"{people}!早上好!")
SayHello("打工人")
SayHello("早八人")
得到结果就是
打工人!早上好!
早八人!早上好!
这个演示就是在调用时分别将“打工人”、“早八人”传递给了people,最终执行函数内代码后输出了不同的结果。
给函数设置多个形参
多个形参需要被实参传递数据时,有两种传递方式,关键字实参
与位置实参
def Addition(a,b):
c = a+b
print(c)
#关键字实参
Addition(a=2,b=3)
#位置实参
Addition(2,3)
得到
5
5
需要注意的是,关键字实参的前后顺序不重要(b=3,a=2)等价于(a=2,b=3),位置实参的(3,2)不等价于(2,3)。(3,2)它的实际含义变成了a=3,b=2,因此位置实参在传递时要和形参的顺序对应
默认形参
不是所有形参需要接收实参的传递值,有些数值固定的形参也可以在定义时设置好。
def Circle(r,pi=3.14):
area = r*r*pi
print(area)
Circle(2)
Circle(2,3)
得到
12.56
12
从结果可以看出,形参被赋值后,调用时不传入实参函数正常运行。但是在传入实参后,程序也会优先将传入的实参值代入函数中运行。
还有一个注意事项是定义函数时有值的形参一定要放在没有赋值的形参后面。
这样做的理由是:如果把有值形参放在前面,程序传递实参时无法判断先把这个实参用于覆盖默认值还是将实参传递给其他没有值的形参。`
函数的返回值
在上诉的场景中,我都是用print()直接让函数输出了运行的结果。实际运用中,会需要拿运行结果再进行一些操作,以print()做结显然不适合所有场景,这时需要用return
来返回结果。
将刚才使用的加法函数改成return
def Addition(a,b):
c = a+b
return c
re = Addition(2,3)
print(re)
得到结果
5
这个例子中,将c的值返回给了Addition(2,3),可以在函数外部做一些数值传递和操作
。
如果直接print(c)是没有结果的,因为c是仅仅在函数内使用的变量,在外部找不到名为c的变量。
return不仅仅可以返回变量,还可以返回字符串或表达式。当return返回多个值
时,会以元组
形式传递到外部。
return在一个函数中只可以使用一次,一旦return函数立即运行结束
def Addition(a,b):
c = a+b
return c,a
print(Addition(2,3))
得到结果
(5,2)
函数的变量
在Adiition函数的例子中,提到print(c)报错的情况,函数外部无法直接使用定义在函数内的变量。这里就要提到局部变量
与全局变量
。只有定义在函数内部的变量才是局部变量
局部变量
定义在函数内部的变量只能在函数内使用,函数外无法使用。
def Addition(a,b):
c = a+b
return c
Addition函数里面的c就是局部变量
全局变量
全局变量定义在函数外,函数内外都可以使用。
pi =3.14
def Circle(r):
area = r*r*pi
print(area)
Circle函数就可以直接将定义在外部的pi代入式子计算。
局部变量如果和全局变量同名,决定值的是全局变量。
虽然局部变量怎么赋值都不会影响全局变量的值,如无必要局部变量和全局变量要使用不同变量名
3.匿名函数
无需定义函数名的函数被称为匿名函数
,它可以将结果直接赋值给变量,用lambda
来创建函数
pi = 3
#定义匿名函数的格式 lambda创建函数,r是形参,:是固定格式,冒号后面是进行计算的表达式
Circle1 = lambda r:pi*r*r
print(Circle1(1))
得到
3
前面提到函数定义有print有return做结,匿名函数只能用来定义return式函数
4.递归函数
之前的函数使用都是先定义后使用
,实际运用时,函数内部也可以调用自身。
累加就是一种经典的递归思想
一篇递归详解文章:p
def sum(x):
if x ==1:
return
return x+sum(x-1)
sum(10)
得到10的累加
55
10的累加是10+9+8+7+6+5+4+3+2+1
在这个编程过程中实际上是把10拆成10+sum(9),sum(9)这个式子会拆成9+sum(8),sum(8)会拆成8+sum(7)…最后到sum(1)经判断将x=1反给函数得到我们平时得到的递归式子。
总结
今天回顾了定义函数和定义函数过程中的注意事项,也回顾了匿名函数,以及递归函数的部分知识(之后复习C的时候再啃啃吧,偷懒!)。
标签:流水账,return,函数,形参,Python,Day5,print,实参,定义 From: https://blog.csdn.net/m0_52038203/article/details/142915487