python学习七(一) 函数

1.定义函数

一个简单的函数:

def greet_user():
	print("Hello world!")

greet_user()

结果:

Hello world!
1.1向函数传递参数
def greet_user(username):
	print("Hello," + username.title() + "!")

greet_user('littleegg')

结果:

Hello,Littleegg!
1.2实参和形参

在上述的代码中,def greet_user(username)中的username是一个形参;greet_user(‘littleegg’)的‘littleegg’是一个实参。调用函数时,实参‘littleegg’传递给甘薯greet——user(),这个值被存储在username中。
2.传递参数
调用函数时,python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。注意,是实参中的顺序要与形参中的顺序相同。

2.1位置实参
def describle_pet(animal_type,pet_name):
	print("I have a " + animal_type + ".")
	print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describle_pet('dog','xiaohei')

结果:

I have a dog.
My dog's name is Xiaohei.
2.2关键字实参

关键字实参是传递给函数的名称—值对。关键字实参让你无需考虑函数调用中的实参顺序,还清楚的指出了函数调用中各个值得用途。

def describle_pet(animal_type,pet_name):
	print("I have a " + animal_type + ".")
	print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describle_pet(animal_type = 'dog',pet_name = 'xiaohei')

结果:

I have a dog.
My dog's name is Xiaohei.
2.3默认值

编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,python将使用指定的实参值;否则,将使用形参的默认值。

def describle_pet(pet_name,animal_type = 'dog'):
	print("I have a " + animal_type + ".")
	print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describle_pet(pet_name = 'xiaohei')

结果:

I have a dog.
My dog's name is Xiaohei.
2.4等效的函数调用

鉴于可混合使用位置参数实参、关键字实参和默认值,通常有多种等效的函数调用方式。
def describle_pet(pet_name,animal_type = ‘dog’)
基于这种定义,在任何情况下都必须给pet——name提供实参;指定该实参时可以使用位置参数,也可以使用关键字参数。
以下三条语句输出相同。

describle_pet('benben','cat')
describle_pet(pet_name = 'benben',animal_type = 'cat')
describle_pet(animal_type = 'cat',pet_name = 'benben')

结果:

I have a cat.
My cat's name is Benben.

3.返回值

函数返回的值被称为返回值,在函数中可以使用return语句将值返回到调用函数的代码行。

3.1返回简单值
def get_fomatted_name(first_name,last_name):
	full_name = first_name + '·' + last_name
	return(full_name.title())

print(get_fomatted_name('albert','einstein'))

结果:

Albert·Einstein
3.2让实参变成可选的

假设拓展get_fomatted_name函数,使之可以处理中间名,但是不是所有人都有中间名,那么需要进行判断。

def get_fomatted_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())

print(get_fomatted_name('albert','einstein'))
print(get_fomatted_name('蒙奇','路飞','D'))

结果:

Albert·Einstein
蒙奇·D·路飞
3.3返回字典

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

def build_person(name,sex,age):
	person = {'name':name,'sex':sex,'age':age}
	return person

example = build_person('littleegg','女',20)
print(example)

结果:

{'name': 'littleegg', 'sex': '女', 'age': 20}
3.4结合使用函数和while循环
def fomatted_name(first_name,last_name):
	full_name = first_name + '·' + last_name

	return full_name.title() 

while True:
	print("\nPlease tell me your name : ")
	print("(Enter 'q' at any time to quit)")

	f_name = input("First_name:")
	if f_name == 'q':
		break
	l_name = input("Last_name:")
	if l_name == 'q':
		break

	fomatted_name = fomatted_name(f_name,l_name)
	print("\nHello," + fomatted_name + "!")

结果:

Please tell me your name : 
(Enter 'q' at any time to quit)
First_name:isaac
Last_name:newton

Hello,Isaac·Newton!

Please tell me your name : 
(Enter 'q' at any time to quit)
First_name:q

4.传递列表

将列表传递给函数后,函数就可以直接访问其内容。可使用函数来提高处理列表的效率。

def greet_users(users):
	for user in users:
		message = "Hello," + user.title() + "!"
		print(message)

exampleusers = ['xiaoming' , 'marton' , 'littleegg']
greet_users(exampleusers)

结果:

Hello,Xiaoming!
Hello,Marton!
Hello,Littleegg!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值