前言:
眼前你们对“编写一个函数实现以下功能”可能比较关怀,兄弟们都想要学习一些“编写一个函数实现以下功能”的相关知识。那么小编也在网上网罗了一些关于“编写一个函数实现以下功能””的相关内容,希望兄弟们能喜欢,看官们快快来学习一下吧!带你走进 @ 机器人时代
Discover 点击上面蓝色文字,关注我们
Python函数入门:在编程中,经常会遇到重复编写代码的情况,将这些经常重复编写的代码封装起来构成函数,需要的时候就可以调用,这样就节省了我们大量的时间和精力。
来看一个简单的例子:
def res(a): print(a)a=5#调用函数打印a的值res(a)运行结果:5
这是一个简单的函数应用,如果我们想专门处理一个字符串,把它们拆成单词表,用函数专门实现呢?
#把字符串拆成单词表def chai(p): for i in p.split(' '): print(i)a=input('请输入你要拆分的句子:')#调用函数打印单词表chai(a)运行结果:请输入你要拆分的英文句子:这是 一个 迭代器这是一个迭代器
这样看起来,好像写个函数也没有多省事吧?
不过,我们想一想,如果把函数放在另外一个文件里,假如我们命名为fs.py当我们其他文件要调用这个功能的时候,只需要import fs 就可以调用这个功能,是不是瞬间觉得很轻松?
上面的例子中,我们输入的变量是a,传递到函数里面后,a的值就替换了函数里面p的值,这就叫传递参数。
Python函数传递参数有形参和实参两种传递,在上面的例子中chai(p)就是形参,而我们调用时chai(a)就是实参。
在传递参数的时候有两种方式:一种是传值,另一种是引用(地址,如列表型变量)传递,引用传递后,改变形参的值,实参的值也会一同改变。下例:
#参数的传递:传值和引用(传址)def demo(n) : n += n print("形参值为:",n)print("-------值传递-----")a = "蜀门"print("a的值为:",a)demo(a)print("实参值为:",a)print("-----引用传递-----")a =[1,2,3]print("a的值为:",a)demo(a)print("实参值为:",a)运行结果:-------值传递-----a的值为:蜀门形参值为:蜀门蜀门实参值为:蜀门-----引用传递-----a的值为:[1, 2, 3]形参值为:[1, 2, 3, 1, 2, 3]实参值为:[1, 2, 3, 1, 2, 3]
仔细分析运行结果,我们发现,引用传递之后,实参的值也跟着改变了!原来的值是[1,2,3],传递之后变成了[1,2,3,1,2,3]。
为什么会这样呢?原来传值的时候,是把传的值复制一份副本交给函数,所以无论函数内部对参数值如何修改,都不会改变实际值;
虽然形参的底层实现也是传值,但函数的在操作的时候还是将原来的值改变了。所以,如果我们要修改函数外的某些数据,我们可以把这些数据包装成列表、字典等可变对象,然后把列表、字典等可变对象作为参数传入函数,在函数中通过列表、字典的方法修改它们。
注意,我们在调用函数的时候,调用函数时传入实际参数的数量、位置和数据类型都必须和定义函数时保持一致,当然如果使用关键字参数来调用,可以改变位置。
如果在定义函数的时候使用了默认值,如:
def c_atr(s=0):
print(s)
def c_atr(s=0): print(s)c_atr()输出:0
即使不输入参数,函数使用默认的值。值得注意的是当定义一个有默认值参数的函数时,有默认值的参数必须位于所有没默认值参数的后面。
如果希望传入多个参数,但又不想在定义函数的时候写明确,可以考虑可变参数:
def c_atr(u,*y): print(u,y) for i in y: print(i,end='')#在一行内输出c_atr(1,2,3,4,5)输出结果:1 (2, 3, 4, 5)2345
可以看出,函数将可变参数自动识别为一个元组输出。
def c_atr(*u,y): print(u,y) for i in u: print(i,end='')c_atr(1,2,3,4,5,y=6)输出结果:(1, 2, 3, 4, 5) 612345
可见,可变参数是可以写在前面,但这样的话,后面的普通参数必须用关键字参数进行传递,否则Python会报错,大家可以自己测试一下。
除了可变参数,我们还可以传入字典:
def c_atr(x,*y,**z): print(x,y,z)c_atr(1,2,3,r=8)输出结果:1 (2, 3) {'r': 8}
一个*号的可变参数默认的是一个空元组,而两个*号的可变参数默认的是一个空字典,这样对于一些复杂的函数应用,可以更加灵活。
此外,Python 还支持逆向参数收集,即直接将列表、元组、字典作为函数参数,Python 会将其进行拆分,把其中存储的元素按照次序分给函数中的各个形参:
#逆向参数收集def c_atr(c,b,a): print(a,b,c)list=[1,2,3]c_atr(*list)输出结果:3 2 1
注意函数的顺序,大家可以自行测试改变顺序,会发生什么变化。
有时候,我们需要函数执行操作后返回一些结果,那么我们使用return语句来实现:
#return输出def c_atr(a): s=a*a return sprint(c_atr(8))输出结果:64
使用return的时候要注意,在函数中可以多次出现,但只要执行了第一个,整个函数就会自动跳出,从而结束函数的执行,可以在多个判断条件中使用:
def c_atr(a): if a<8: return a*a else: return a**aprint(c_atr(7))print(c_atr(9))输出结果:49387420489
函数可以返回多个值:
#多个返回值def c_atr(a): s=a*a p=a**a return s,pprint(c_atr(7))#返回一个元组输出结果:(49, 823543)
函数的基础用法今天就介绍到这里,下次我们介绍一些更高级的用法。
每天坚持学习,这样每天都能进步一点点!!
往期回顾:
来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!RPA技术在旅行社销售业务中如何凤凰涅槃??【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!
本文引用和摘录相关内容,请联系侵删。
- END -
最后,文章有帮助到你的话【点赞在看】
激励我们分享更多的干货!