python入门(六)

函数

定义函数

一个简单的示例,打印问候语的见到那函数,名为greet_user()

def greet_user():
	print("hello world")

greet_user()

>> hello world

这个示例演示了最简单的函数结构,使用关键字def来告诉python你要定义一个函数。这是函数定义,向python指出了函数名,还可以在括号内指出函数为完成其任务需要什么样的信息,即参数。最后以冒号结尾。紧跟在def greet_user()后面的所有缩进行构成了函数体。

向函数传递信息

def greet_user(username):
"""显示简单的问候语"""
	print("Hello, " + username.title() + "!")
greet_user('jesse')

>>Hello, Jesse!

在函数greet_user()的定义中,变量username是一个形参。在代码greet_user(‘jesse’)中,值’jesse’是一个实参。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。

传递实参

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

位置实参

在调用函数时,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.

在使用位置实参时,调用函数的参数位置非常重要!!!

关键字实参

关键字实参是传递给函数名-值对。在实参中直接将名称和值关联起来,因此向函数传递实参时不会混淆。关键字实参可以不需要考虑参数的位置。

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')

函数describe_pet() 还是原来那样,但调用这个函数时,我们向Python明确地指出了各个实参对应的形参。看到这个函数调用时,Python知道应该将实参’hamster’
和’harry’ 分别存储在形参animal_type 和pet_name 中。

默认值

在编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,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.

返回值

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值 。在函数中,可使用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)

>>Jimi Hendrix
让实参变成可选的

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

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)

>>John Lee Hooker

然而,并非所有的人都有中间名,但如果你调用这个函数时只提供了名和姓,它将不能正确地运行。为让中间名变成可选的,可给实参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)
返回字典

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

def build_person(first_name, last_name):
	"""返回一个字典,其中包含有关一个人的信息"""
	person = {'first': first_name, 'last': last_name}
	return person
musician = build_person('jimi', 'hendrix')
print(musician)

>>{'first': 'jimi', 'last': 'hendrix'}

函数build_person() 接受名和姓,并将这些值封装到字典中使用的键为’first’ ,而存储last_name 的值时,使用的键为’last’ 。最后,返回表示人的整个字典。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值