1、函数
函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定义务,可调用该函数。当需要再程序中多次执行同一项任务时,无需反复编写完成该任务的代码,只需要调用该任务的函数,让其运行即可。
1.1、定义函数
def 函数名( 填入需要的信息 ):
下面为一个简单的实例:
python
def greet_user():
'''显示问候语'''
print("Hello!")
greet_user()
第一行代码使用关键字def来告诉Python,需要定义一个什么函数。这是函数定义 ,向Python指出了函数名,还可以在括号内指出函数为完成工作需要什么信息。最后,定义以冒号结尾。
注: 函数名的命名规则:函数名一律小写,若有多个单词则用下划线将其分隔开;另外,私有函数一下划线开头。
要使用某个函数必须调用它。函数调用让Python执行函数中的代码。要调用函数,可依次指定函数名以及用括号括起来的必要信息。如上调用它是只需要输入greet_user()即可。即打印Hello!
1.1.1、向函数传递信息
可在函数定义def greet_user():的括号内添加需要执行的信息。如下我在括号内添加name,这样,可让函数接受你给的name指定的任何值。现在,这个函数要求你在调用它时给name指定一个值。因此在调用greet_user()时,可将名为name的值填入括号内,传递给它。如下:
python
def greet_user(name):
'''显示问候语'''
print(f"Hello!{name.title()}")
greet_user('karry')
代码greet_user('karry')调用函数greet_user(),并向它提供执行函数调用print()所需的信息。这个代码接受你传递给它的name,并且打印它:
可以根据需要调用greet_user()任意多次,无论在调用时传入的name为什么,都将生成相依的输出。
1.1.2、实参和形参
在前面定义greet_user()函数时,要求给变量name指定一个值。这样,在调用这个函数并提供这种信息时,它将打印相应的信息。
在greet_user()函数的定义中,变量name是一个形参 ,即函数完成工作所需的信息;在代码greet_usr('karry')中,值'karry'是一个实参,即在调用函数时传递给函数的信息。
1.2、传递实参
函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递的方式有:①可以使用位置实参 ,这就要求实参的顺序与形参对的顺序相同;②可以使用关键词实参,其中每个实参都由变量名和值组成;③还可以使用列表和字典。
1.2.1、位置实参
实参的位置与形参的位置相对应,每个实参关联到函数定义中的一个形参。最简单的方式就是依照实参的顺序进行关联。这种称为位置实参。
为了理解其中的原理,我们来看个实例:
python
def des_pet(ani,pet):
print(ani)
print(f"{ani.title()},{pet.title()}")
des_pet('hamster','harry')
实参'hamster'赋给形参ani;实参'harry'赋给形参pet。打印输出如下:
Hamster,Harry
位置实参的顺序很重要,当使用位置实参来调用函数时,如果实参的顺序不正确,结果可能会出乎意料,打印输出的信息和你想的可能会打乱。在使用位置实参时,一定要注意确认调用中实参对的顺序与函数定义中形参的顺序是否一致。
1.2.2、关键字实参
关键字实参是传递给函数的名值对。会直接在实参中将名称和值关联起来,因此像函数传递实参时就不会混淆了。
下面编写,在其中使用关键字实参来调用des_pet():
python
def des_pet(ani,pet):
print(ani)
print(f"{ani.title()},{pet.title()}")
des_pet(ani='hamster',pet='harry')
des_pet()函数还和之前一样,但这次调用这个函数时,向Python明确地指出了各个实参对应的形参。关键字实参的顺序无关紧要,因为Python知道各个值该被赋给哪个形参。如下的输出和上的一样:
Hamster,Harry
1.2.3、默认值
在编写函数时,可以给每个形参指定默认值。如果在调用函数中给形参提供了实参,Python将使用指定的实参值;否则,将使用形参的默认值。
1.2.4、避免实参错误
当提供的实参多于或少于函数完成工作所需的实参数量时,将会出现实参不匹配的错误。
1.3、返回值(return)
函数并非直接显示输出,它还可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值。可以使用return语句将值返回到调用函数的那行代码。
格式:
python
def 函数名(参数1,参数2,...,参数n)
函数体第一行代码
函数体第一行代码
...
函数体第一行代码
return 语句
变量=函数名(参数1,参数2,...,参数n)
1.3.1、返回简单的值
如下来进行一段代码:
python
def city_country(city,country):
full=f"{city.title()},{country.title()}"
return full
magger=city_country('chongqing','China')
print(magger)
输出如下:
Chongqing,China
1.3.2、结合使用函数和while循环
下列代码呈现:
python
def make_album(name,song):
persons={'make':name,'album':song}
return persons
while True:
print("\n 请输入名和专辑")
name = input("请输入名:")
song = input("请输入专辑:")
magger=make_album(name,song)
print(magger)
if name == 'q':
break
if song == 'q':
break
输出为: