Python学习日记 Day8函数基础(上)

今天是2020年2月17日,晴,-1~7℃

书中,函数被定义为带名字的,用于完成具体的代码块。需要多次执行同一任务时,无需反复编写该任务的代码,而只需调用函数。通过使用函数,程序的编写、阅读、测试和修复都将更容易。

一、函数定义

在Python中,函数使用 def 关键字定义。

'''
def func_name(parameter_1,parameter_2,...):
	do something
'''
def hello_world():			#函数定义
	'''向世界问好'''			#文档字符串,注释函数的功能
	print("Hello World!")	#函数运行的代码
hello_world()				#函数调用  Output:Hello World!

在括号中添加参数,可以在使用时向函数传递信息。

def hello(name):
	'''问好'''
	print("Hello, " + name + "!")
hello("Alex")		#Output:Hello, Alex!

二、传递实参

1、实参和形参

在函数定义中的参数被称为形参,是函数完成工作所需要的信息;在函数调用中传递的参数被称为实参,是调用时传递给函数的信息。在调用函数时,程序将实参传递给函数,并保存在形参中。

2、实参传递的方式

调用函数时,Python有多种传递实参的方式,其中包括位置实参和关键字实参。

● 位置实参

位置实参是最简单的将形参与实参关联起来的方式。用这种方式传递实参时,实参将按顺序传递给对应的形参。

def greet(name_1,name_2):
	'''两人互相问好'''
	print("Hello, " + name_1 + "!")
	print("Nice to meet you, " + name_2 + "!")
greet("Micheal","Lucas")
greet("Lucas","Micheal")
'''
Output:
Hello, Micheal!
Nice to meet you, Lucas!
Hello, Lucas!
Nice to meet you, Micheal!
'''
● 关键字实参

关键字实参是传递给函数的名称—值对。这种方式将直接指出形参应关联的实参,因此不需要考虑形参的顺序。

#与上例相同的函数
def greet(name_1,name_2):
	'''两人互相问好'''
	print("Hello, " + name_1 + "!")
	print("Nice to meet you, " + name_2 + "!")
greet(name_1 = "Micheal",name_2 = "Lucas")
greet(name_2 = "Micheal",name_1 = "Lucas")
'''
Output:
Hello, Micheal!
Nice to meet you, Lucas!
Hello, Lucas!
Nice to meet you, Micheal!
'''
● 函数的等效调用

位置实参和关键字实参除了在传递参数时有所不同,其它并无区别。若形参所对应的实参是相同的,则两种方式调用也应是等效的。这两种调用方式也可以结合起来使用。

#以下函数调用是等效的
greet("A","B")
greet(name_1 = "A",name_2 = "B")
greet(name_2 = "B",name_1 = "A")
greet("A",name_2 = "B")

注意:关键字实参后不能出现顺序实参。换言之,应先使用顺序实参,再使用关键字实参。

3、 默认值

定义函数时,可以给形参指定默认值。若在调用时指定了实参,则优先使用实参;若未指定实参,则使用默认值。因此,在函数调用时可以忽略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。

def greet(name_1,name_2 = "Alex"):
	'''两人互相问好'''
	print("Hello, " + name_1 + "!")
	print("Nice to meet you, " + name_2 + "!")
greet("Micheal")
greet("Peter","Chris")
'''
Output:
Hello, Micheal!
Nice to meet you, Alex!
Hello, Peter!
Nice to meet you, Chris!
'''

注意:带有默认值的形参必须放在无默认值形参的后面。

三、函数返回值

有时我们不需要函数直接输出,而希望通过函数能获得一个值或一组值。这时需要使用函数来返回值。

1、返回简单值

使用 return 关键字可以在函数中返回一个值。

def is_even(number):
	'''判断一个数是不是偶数'''
	if number % 2 == 0:
		return True
	return False
flag = is_even(6)
print(flag)
flag = is_even(9)
print(flag)
'''
Output:
True
False
'''
def get_full_name(first_name,middle_name,last_name):
	'''输出全名'''
	full_name = first_name.title() + " " + middle_name.title() + " " + last_name.title()
	return full_name
print(get_full_name("kobe","bean","bryant"))		#Output:Kobe Bean Bryant

2、可选参数

通过默认值,可以将参数设置为可选参数。

def get_full_name(first_name,last_name,middle_name = ""):
	'''输出全名'''
	if middle_name:
		full_name = first_name.title() + " " + middle_name.title() + " " + last_name.title()
	else:
		full_name = first_name.title() + " " + last_name.title()
	return full_name
print(get_full_name("kobe","bryant"))
print(get_full_name("kobe","byrant","bean"))
'''
Output:
Kobe Bryant
Kobe Bean Byrant
'''

3、返回字典

函数不仅能返回简单值,也能返回字典、列表等数据类型的值。

def get_full_name(first_name,last_name):
	'''输出全名'''
	full_name = first_name.title() + " " + last_name.title()
	person = {"Name" : full_name}
	return person
person = get_full_name("Kobe","Bryant")
print(person)	#Output:{'Name': 'Kobe Bryant'}

4、结合使用while循环和函数

函数可与任何Python结构结合使用,以 while 循环为例:

def get_full_name(first_name,last_name):
	'''输出全名'''
	full_name = first_name.title() + " " + last_name.title()
	return full_name
while True:
	if input("If you wanna quit, Enter 'Q'; If you don't wanna quit, enter whatever you like: ").lower() == 'q':
		break
	first_name = input("Please tell me your first name: ")
	last_name = input("Please tell me your last name: ")
	full_name = get_full_name(first_name,last_name)
	print("Your name is " + full_name + "!")

你可能感兴趣的:(Python,python)