函数1定义函数和传递参数-python进阶篇一
一、定义函数
def greet_user(): """显示简单的问候语""" print("Hello!") greet_user()
这个示例演示了最简单的函数结构。关键字def 来告诉Python你要定义一个函数,还可能在括号内指出函数为完成其任务需要什么样的信息。函数名为greet_user() ,它不需要任何信息就能完成其工作,因此括号是空的(即便如此,括号也必不可少),最后,定义以冒号结尾。紧跟在def greet_user(): 后面的所有缩进行构成了函数体。代码行print("Hello!") 是函数体内的唯一一行代码,greet_user() 是函数的调用:打印Hello! 。
二、向函数传递信息
只需稍作修改,就可以让函数greet_user() 不仅向用户显示Hello! ,还将用户的名字用作抬头。
def greet_user(username): """显示简单的问候语""" print("Hello, " + username.title() + "!") greet_user('jesse') #Hello, Jesse!
1、实参和形参
在函数greet_user() 的定义中,变量username 是一个形参形 ——函数完成其工作所需的一项信息。在代码greet_user('jesse') 中,值'jesse' 是一个实参 。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user('jesse') 中,将实参'jesse' 传递给了函数greet_user() ,这个值被存储在形参username 中。
鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参位 ,这要求实参的顺序与形参的顺序相同;也可使用关键关字实参字 ,其中每个实参都由变量名和值组成;还可使用列表和字典。下面来依次介绍这些方式。
(1)位置实参
调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参位。
def describe_pet(animal_type, pet_name): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet('hamster', 'harry') #按顺序提供一种动物类型和一个名字 ''' I have a hamster. My hamster's name is Harry. '''
(2)关键字实参
def describe_pet(animal_type, pet_name): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet(animal_type='hamster', pet_name='harry') describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='harry', animal_type='hamster')
(3)给形设定默认值
编写函数时,可给每个形参指定默认值默 。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。
def describe_pet(pet_name, animal_type='dog'): """显示宠物的信息""" print("\nI have a " + animal_type + ".") print("My " + animal_type + "'s name is " + pet_name.title() + ".") describe_pet(pet_name='willie') #宠物的类型使用了默认值 ''' I have a dog. My dog's name is Willie. '''