欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习日记 Day8函数基础

程序员文章站 2022-03-20 18:28:44
...

今天是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学习