下面是一个打印问候语的简单函数,名为greet_user():

  1. # greeter.py
  2. def great_user():
  3. """这是一个简单的函数!"""
  4. print('甘霖凉,你好啊')
  5. great_user()

这个示例演示了最简单的函数结构。第二行的代码使用关键字def来告诉Python你要定义一个函数。这是函数定义,向Python指出了函数名,还可能在括号内指出函数为完成其任务需要什么样的信息。在这里,函数名为greet_user(),它不需要任何信息就能完成其工作,因此括号是空的(即便如此,括号也必不可少)。最后,定义以冒号结尾。

紧跟在def greet_user():后面的所有缩进行构成了函数体。第三行的文本是被称为文档字符串(docstring)的注释,描述了函数是做什么的。文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。

代码行print(‘甘霖凉,你好啊’) 是函数体内的唯一一行代码,greet_user()只做一项工作:打印’甘霖凉,你好啊’。

要使用这个函数,可调用它。函数调用让Python执行函数的代码。要调用函数,可依次指定函数名以及用括号括起的必要信息。由于这个函数不需要任何信息,因此调用它时只需输入greet_user()即可。和预期的一样,它打印’甘霖凉,你好啊’:


甘霖凉,你好啊


8.1.1 向函数传递信息(Pass Information to Functions)

只需稍作修改,就可以让函数greet_user()不仅向用户显示’甘霖凉,你好啊’,还将用户的名字用作抬头。为此,可在函数定义def greet_user()的括号内添加username。通过在这里添加username,就可让函数接受你给username指定的任何值。现在,这个函数要求你调用它时给username指定一个值。调用greet_user()时,可将一个名字传递给它,如下所示:

  1. # greeter.py
  2. def great_user(username):
  3. """这是一个简单的函数!"""
  4. print(f'甘霖凉,你好啊{username}')
  5. great_user('Thomas')

代码greet_user(‘Thomas’)调用函数greet_user(),并向它提供执行print语句所需的信息。这个函数接受你传递给它的名字,并向这个人发出”问候”:


甘霖凉,你好啊Thomas


同样,greet_user(‘Six’)调用函数greet_user()并向它传递’Six’,打印’甘霖凉,你好啊Six’。你可以根据需要调用函数greet_user()任意次,调用时无论传入什么样的名字,都会生成相应的输出。

8.1.2 实参和形参(Arguments and Parameters)

前面定义函数greet_user()时,要求给变量username指定一个值。调用这个函数并提供这种信息(人名)时,它将打印相应的”问候语”。

在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在代码greet_user(‘Thomas’)中,值’Thomas’是一个实参。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user(‘Thomas’)中,将实参’Thomas’传递给了函数greet_user(),这个值被存储在形参username中。

注:大家有时候会形参、实参不分,因此如果你看到有人将函数定义中的变量称为实参或将函数调用中的变量称为形参,不要大惊小怪。