函数#
我们在过去的课程中使用过函数。函数有名称和参数。有些函数返回结果,有些则不返回。我们通常使用 result = name(parameters) 的形式来调用它们。
另请参阅
让我们看一些函数的例子,比如 print(text) 和 pow(x, y)。print函数接受一个参数(或多个参数)并且不返回任何内容:
result = print('Hello world')
Hello world
result
pow 函数有两个参数并返回一个结果:
result = pow(2, 3)
result
8
自定义函数#
你可以使用 def 语句定义自己的函数。在def语句之后,你应该指定函数的名称,并在括号中指定其参数。然后是一个冒号 : ,所有缩进的后续代码行都是这个函数的一部分。最后的 return 语句将结果发送回函数被调用的地方。
def sum_numbers(a, b):
result = a + b
return result
然后你可以根据需要多次调用你的函数
sum_numbers(3, 4)
7
sum_numbers(5, 6)
11
有时,你可能想将函数的结果保存在一个变量中。
c = sum_numbers(4, 5)
print(c)
9
使用函数简化代码#
假设你有一个复杂的算法,可以判断一个数是奇数还是偶数。让我们把这个算法放在一个函数中,稍后再调用它。对于我们的算法,我们将使用模运算符 %。
def print_odd_or_even(number):
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
print_odd_or_even(3)
3 is odd
print_odd_or_even(4)
4 is even
print_odd_or_even(10)
10 is even
因此,我们不需要反复编写相同的 if-else 块,只需调用我们自定义的 print_odd_or_even 函数即可。
函数文档#
你可以在函数的所谓文档字符串中记录函数的功能。文档字符串紧跟在函数头之后,看起来像这样:
def square(number):
'''
将一个数平方,即将其与自身相乘,并返回结果。
'''
return number * number
之后你可以这样阅读函数的文档:
print(square.__doc__)
Squares a number by multiplying it with itself and returns its result.
如果你想在笔记本中并排显示文档字符串,也可以尝试这样:
square?
Signature: square(number)
Docstring: Squares a number by multiplying it with itself and returns its result.
File: /var/folders/p1/6svzckgd1y5906pfgm71fvmr0000gn/T/ipykernel_11914/1507435947.py
Type: function
顺便说一下,你可以对任何函数这样做:
import math
print(math.sqrt.__doc__)
Return the square root of x.
print(math.exp.__doc__)
Return e raised to the power of x.
练习#
编写一个函数,接受两个参数:number_of_points_in_exam 和 number_of_total_points_in_exam,并返回一个1到5的成绩。获得超过95%分数的学生得1分,超过80%得2分,超过60%得3分,超过50%得4分。得分低于50%的学生得5分并需要重考。然后,为三名学生调用这个函数,他们在一次总分为30分的考试中分别得到15分、25分和29分。