python函数的学习

函数是带名字的代码块,用于完成具体的工作。
在本章中,你还会学习向函数传递信息的方式。你将学习如何编写主要任务是显示信息的函数,还有用于处理数据并返回一个或一组值的函数。最后,你将学习如何
将函数存储在被称为模块 的独立文件中,让主程序文件的组织更为有序。

向函数传递信息

def greet_user(username):
“”“显示简单的问候语”""
print("Hello, " + username.title() + “!”)
greet_user(‘jesse’)
代码greet_user(‘jesse’) 调用函数greet_user() ,并向它提供执行print 语句所需的信息。这个函数接受你传递给它的名字,并向这个人发出问候:
Hello, Jesse!

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

传递实参
鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参 ,这要求实参的顺序与形参的顺序相同;也可使用关键字实参 ,其中每个实参都由变量名和值组成;还可使用列表和字典

(1)顺序实参
(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(pet_name=‘harry’, animal_type=‘hamster’)

函数调用的时候,如果第一个参数使用了关键字绑定,后面的参数也必须使用关键字绑定!

默认值
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’)
 使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。这让Python依然能够正确地解读位置实参。

返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值 。在函数中,可使用return 语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序

❶ def get_formatted_name(first_name, last_name):
“”“返回整洁的姓名”""
❷ full_name = first_name + ’ ’ + last_name
❸ return full_name.title()
❹ musician = get_formatted_name(‘jimi’, ‘hendrix’)
print(musician)

让实参变成可选的
有时候,需要让实参变成可选的,这样使用函数的人就只需在必要时才提供额外的信息。可使用默认值来让实参变成可选的。

def get_formatted_name(first_name, middle_name, last_name):
“”“返回整洁的姓名”""
full_name = first_name + ’ ’ + middle_name + ’ ’ + last_name
return full_name.title()
musician = get_formatted_name(‘john’, ‘lee’, ‘hooker’)
print(musician)
  要同时提供名、中间名和姓,这个函数就能正确地运行.
  然而,并非所有的人都有中间名,但如果你调用这个函数时只提供了名和姓,它将不能正确地运行。为让中间名变成可选的,可给实参middle_name 指定一个默认值——空字
符串,并在用户没有提供中间名时不使用这个实参。为让get_formatted_name() 在没有提供中间名时依然可行,可给实参middle_name 指定一个默认值——空字符串,
并将其移到形参列表的末尾:
❶ def get_formatted_name(first_name, last_name, middle_name=’’):
“”“返回整洁的姓名”""
❷ if middle_name:
full_name = first_name + ’ ’ + middle_name + ’ ’ + last_name
❸ else:
full_name = first_name + ’ ’ + last_name
return full_name.title()
musician = get_formatted_name(‘jimi’, ‘hendrix’)
print(musician)
❹ musician = get_formatted_name(‘john’, ‘hooker’, ‘lee’)
print(musician)
  在函数体中,我们检查是否提供了中间名。Python将非空字符串解读为True ,因此如果函数调用中提供了中间名,if middle_name 将为True (见❷)。如果提供了中间名,就将名、中间名和姓合并为姓名,然后将其修改为首字母大写格式,并返回到函数调用行。在函数调用行,将返回的值存储在变量musician 中;然后将这个变量的值打印出来。如果没有提供中间名,middle_name 将为空字符串,导致if 测试未通过,进而执行else 代码块(见❸):只使用名和姓来生成姓名,并将设置好格式的姓名返回给函数调用行。在函数调用行,将返回的值存储在变量musician 中;然后将这个变量的值打印出来。

返回字典

你可能感兴趣的:(python函数的学习)