龙空技术网

函数有什么好处,谈谈那些令人头疼的编程技巧——Python函数入门

RPA自动化 193

前言:

眼前你们对“编写一个函数实现以下功能”可能比较关怀,兄弟们都想要学习一些“编写一个函数实现以下功能”的相关知识。那么小编也在网上网罗了一些关于“编写一个函数实现以下功能””的相关内容,希望兄弟们能喜欢,看官们快快来学习一下吧!

带你走进 @ 机器人时代

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 -

最后,文章有帮助到你的话点赞在看

励我们分享更多的干货!

标签: #编写一个函数实现以下功能 #c程序调用函数的好处 #python函数的好处 #函数中带默认值的参数必须位于