Python学习——函数及调用
经过之前Python学习——十分钟入门Python一文的学习相信大家对于Python都有了大概的了解。这节课芒果带大家一起来学习Python函数。
函数是带名字的代码块,用来完成某项具体任务的。当我们要执行函数定义的某个任务时,调用该函数即可,不用再反复编写该代码了。
定义函数
Python用def关键字来告诉Python我们将要定义一个函数,后面跟函数名以及参数等,定义以冒号结尾(注意:Python是以缩进来识别语句范围,而不是C系的花括号{})。
例1:
1#定义一个打印"Hello testops!"的函数
2def hello():
3 print("Hello testops!")
4
5#调用函数
6hello()
7
8#显示结果
9Hello testops!
函数参数
当我们的函数需要一定的参数值来被函数体使用时,我们就需要向函数传递参数了。
例2:
1#定义一个传入name来打印Hello name值的函数
2def hello(name):
3 print("Hello " + name + "!")
4
5#调用函数,传入name值为”testops”
6hello("testops")
7
8#显示结果
9Hello testops!
这里说明一下函数定义时,括号里的参数(例子中的name)为形参,而调用时用到的值为实参(例子中的”testops”)。
位置参数
当我们调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的对应形参。为此最简单的关联方式就是按照参数的顺序,也就是位置参数。
例3:
1#定义一个可以传入name和age的函数,用来打印某人的年龄
2def print_info(name,age):
3 print(name + " is " + str(age) + " years old!")
4
5#调用函数,传入name为Mango,年龄为18
6print_info("Mango",18)
7
8#显示结果为
9Mango is 18 years old!
这里需要注意一下,我们在调用时,第一个参数必须为姓名,第二个参数必须为年龄,这样才是形参与实参位置对应。还有就是因为age为int型,所以需要强转为字符型。ps:芒果确实只有18岁
默认参数
在编写函数时,我们可以给形参指定默认值。在调用函数时,如果我们给该参数提供了实参时,函数使用该参数,否则使用形参的默认值。
例4:
1#为定义一个可以传入name和age的函数,用来打印某人的年龄,age设置默认值为18
2
3def print_info(name,age=18):
4 print(name + " is " + str(age) + " years old!")
5
6#调用函数,传入name为Lemon,年龄为20
7print_info("Lemon",20)
8#调用函数,传入name为Mango
9print_info("Mango")
10
11#显示结果为:
12Lemon is 20 years old!
13Mango is 18 years old!
这里我们要注意一点,默认参数要放在位置参数后面。
关键字参数
关键字参数是指传递给函数时,实参与形参关联起来了,这样不按照顺序传参数也不会出错。
例5:
1#定义一个可以传入name和age的函数,用来打印某人的年龄
2def print_info(name,age):
3 print(name + " is " + str(age) + " years old!")
4
5#调用函数,传入name为Mango,年龄为18
6print_info("Mango", 18)
7
8#调用函数,传入name为Mango,年龄为18
9print_info(name="Mango", age=18)
10
11#调用函数,传入name为Mango,年龄为18
12print_info(age=18, name="Mango")
13
14#显示结果为:
15Mango is 18 years old!
16Mango is 18 years old!
17Mango is 18 years old!
通过例子我们可以看到,当实参与形参关联后,不按照顺序也不会出错。ps:Mango is 18 years old!重要的事情说三遍
可变参数
在Python中,函数可以传递可变参数,可变参数是指实参的个数是可变的,在这里只需要将形参前面加上*,则表示实参为可变参数。
例6:
1#定义一个将传入的参数求和的函数
2def mysum(*nums):
3 sum = 0
4 for num in nums:
5 sum = sum + num
6 print(sum)
7
8#调用函数,传入的变量值为1、3、5、7、9
9mysum(1,3,5,7,9)
10#调用函数,传入变量为一个列表
11n = [2,4,6,8,10]
12mysum(*n)
13#调用函数,传入变量为一个元组
14n1 = (2,4,6,8,10)
15mysum(*n1)
16
17#显示结果为:
1825
1930
2030
这里要注意一下,如果默认参数与可变参数同时存在,可变参数放在默认参数后面。
可变关键字参数
有时候函数需要接受任意数量的实参,但是预先不知道会传递什么样的值给函数。这时候我们就需要将函数编写成能够接受任意数量的键-值对,这就是可变关键字参数。在这里只需要将形参前面加上**,则表示实参为可变关键字参数。
例7:
1#定义一个将任意学生信息打印出来的函数
2def student_info(**info):
3 print("student info:")
4 for k,v in info.items():
5 print(str(k) + ": " + str(v))
6
7#调用函数,传入的变量值为name="Mango",age=18,city="changsha"
8student_info(name="Mango",age=18,city="changsha")
9
10#调用函数,传入一个字典
11info = {"name":"Lemon","age":20,"city":"shanghai","height":170}
12student_info(**info)
13
14#显示结果为:
15student info:
16name: Mango
17age: 18
18city: changsha
19
20student info:
21name: Lemon
22age: 20
23city: shanghai
24height: 170
返回值
函数并非总是直接输出,一般它总是处理一些数据,返回一个或者一组值,这个或者这组值被称为函数的返回值。在函数中用return将值返回到函数的代码行。
返回一个值
例8:
1#定义一个将传入的参数求和的函数
2def mysum(*nums):
3 sum = 0
4 for num in nums:
5 sum = sum + num
6 return sum
7
8#调用函数,传入参数为一个列表
9n = [2,4,6,8,10]
10#获取返回值,并打印
11sum = mysum(*n)
12print("数值和为:" + str(sum))
13
14#显示结果为:
15 数值和为:30
返回多个值
例9:
1#定义一个传入的姓和名字分别返回函数
2def split_name(name):
3 #将传入的姓名用空格分开
4 temp = name.split(" ")
5 if len(temp)>=2:
6 first_name = temp[0]
7 last_name = temp[1]
8 return first_name,last_name
9
10#调用函数
11name = "Han Meimei"
12first_name,last_name = split_name(name)
13#获取返回值,并打印
14print(name +"\'s" + "first_name is " + first_name)
15print(name +"\'s" + "last_name is " + last_name)
16
17#显示结果:
18"Han Meimei'sfirst_name is Han"
19"Han Meimei'slast_name is Meimei"
这里需要注意一下,Python返回值为多个时,返回的其实是一个列表,不相信的同学可以打印一下试试看哟~
好了关于Python函数、函数调用、参数以及返回值的介绍就到这里啦,大家学得怎么样呢?有疑问或者想要学习更多Python相关知识的话可以加芒果微信,一起讨论学习哟~
点击原文可以到达我们Python自动化课程学习的目录哟
精益技术 赋能过程