每个函数都应值负责一项具体的工作。一般应给函数指定描述性名称,容易阅读,且只使用小写字母和下划线。
1.定义函数:使用关键字def,以冒号结尾。
def greet():
#定义函数greet()
def greet():
print("Hello world!")
#调用函数greet()
greet()
2.实参和形参
实参:是调用函数时,传递给函数的信息。
形参:定义函数时,定义函数完成需要的变量
一般在调用函数时,将实参传递个函数,实参值被存储在形参中。
#定义一个favorite_book()函数,包含title形参
def favorite_book(title):
print("One of my favorite book is "+title.title())
favorite_book('educated')
3.传递实参
3.1位置实参
调用函数时,实参的顺序与形参的顺序一一对应
def describe_pet(animal_type,pet_name):
print("\nAnimal type is :"+animal_type)
print("\nAnimal name is :"+pet_name)
describe_pet('dog','wangwang')
3.2 关键字实参
关键字实参是传递给函数的名称-值对。在实参中将名字和值关联起来,传递时不会混淆,在调用时不需要考虑实参顺序,还能指出函数调用中各个值得用于。
ef describe_pet(animal_type,pet_name):
print("\nAnimal type is :"+animal_type)
print("\nAnimal name is :"+pet_name)
describe_pet('dog','wangwang')
#效果同describe_pet(animal_type='dog',pet_name='wangwang')
describe_pet(animal_type='dog',pet_name='wangwang')
3.3 默认形参
定义函数时,给函数的形参指定默认值,有了默认值得形参就是默认形参。在调用函数时,如果显示给默认形参提供了实参,则默认形参会被实参覆盖。
def describe_pet(pet_name,animal_type='dog'):
print("\nAnimal type is :"+animal_type)
print("\nAnimal name is :"+pet_name)
#调用函数时没有给形参animal_type提供实参,则会使用默认值“dog”
describe_pet(pet_name='wangwang')
#调用函数时,如果给形参animal_type提供了实参,则实参hamster会代替默认值dog
describe_pet(animal_type='hamster',pet_name='wangwang')
3.4 等效的函数调用
位置实参,关键字实参,默认形参有时调用效果一致,可以混合使用。
3.5函数返回值
函数可以返回任何类型的值,包括列表和字典等比较复杂的数据结构。
def build_person(first_name,last_name):
"""返回一个字典,其中包含有关一个人的信息"""
person={'first_name':first_name,'last_name':last_name}
return person
musician=build_person('xiaoru','song')
print(musician)