1、定义函数#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# def语句定义函数
def hello(name):
print("Hello,", name)
# 添加return语句有两个作用
## (1) 表示函数的结束
## (2) 指定函数的返回值
def square(number):
res = number*number
return res
square(4)
# 可以在函数开头编辑一个文档字符串,用以解释函数功能,可作为函数的一部分储存起来
def square(number):
'Calaulate the square of the input number'
res = number*number
return res
help(square) #可以在帮助文档里找到这个字符串
# 定义多个参数
def hello(time,name):
print("Good",time, ",", name)
hello(name="LI",time="morning")
|
2、参数类型#
(1)在定义函数时,可以设置参数的默认值。但需要注意的是这类参数需要放到最后。
1
2
3
4
5
6
|
def test(x, y, z=3):
print(x, y, z)
test(1,2)
# 1 2 3
test(1,2,4)
# 1 2 4
|
此外还有带一个星号的收集参数与带两个星号的收集关键词参数,暂时用不到。
(2)在调用函数时,有两种方式,对应两类参数:
- 位置参数:仅提供若干值,对应定义函数时参数顺序。因此一定要注意顺序
1
2
3
4
|
def test(x, y, z):
print(x, y, z)
test(1,2,3)
# 1 2 3
|
- 关键字参数:
参数名称=值
的形式。可以无视定义函数时的参数顺序
1
2
3
4
|
def test(x, y, z):
print(x, y, z)
test(y=1,z=2,x=3)
# 3 1 2
|
通常不应该混合使用位置参数与关键字参数
一个小示例#
- 当传递的参数是一个列表时,可对其进行修改;
- 如下表示登记学生的成绩。如果已经登记则返回提示,如果没有则需输入成绩。有点类似字典的setdefault方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def add_students(all_stu,stu):
'Registration record'
had_stu = list(all_stu.keys())
if stu in had_stu:
return "The students had grades"
else:
all_stu[stu] = int(input("Please input the student's grade:"))
students = {'A':59, 'B':72, 'C':90}
add_students(students,"A")
# 'The students had grades'
add_students(students,"D")
students
# {'A': 59, 'B': 72, 'C': 90, 'D': 99}
|
3、lambda表达式#
1
2
3
4
|
#lambda [arg1 [,arg2,.....argn]]:expression
sums = lambda num1, num2: num1 + num2
sums(1,2)
# 3
|