Python从入门到实践之函数|第8天
User:你好我是森林
Date:2018-03-21
Mark:《Python从入门到实践》
函数
函数是带名字的代码块,用于完 成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次 执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用 执行该任务的函数,让Python
运行其中的代码。
定义函数
定义函数的关键字:def
,由此来告诉Python
这是一个函数。
代码示例:
def hello_user():
"函数体说明部分"
mes = "你好我是森林"
print(mes)
hello_user()
def
关键字定义函数;hello_user()
是该函数的函数名;冒号定义结尾;冒号后面到缩进结尾表示该函数的函数体,也就是函数需要做什么。上述函数就是打印一个变量。执行结果为:你好我是森林
。而最后一行表示调用函数名为hello_user()
的函数。
向函数传递信息
在函数名后面的括号可以进行传参操作,例如传入简单的用户名。
代码示例:
def get_user(username):
"""用户信息"""
print("我的名字叫: " + username)
get_user("你好我是森林")
执行结果:
我的名字叫:你好我是森林
实参和形参
方法在定义的时候的参数称为形参,函数完成其工作所需的一项信 息;函数在调用的时候传入的参数称为实参。
例如在上面的代码中,get_user(username)
的``username未形参,而调用的时候输入
你好我是森林`为实际参数。
传递实参
鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。
位置实参
调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。
def get_user(type,value):
"""用户信息"""
print("我的" + type + "是: " + value)
get_user("年龄",'18')
根据type
的类型传入的值,输入不一样的结果。传入的年龄
就存入函数的type
变量中,88
就存入value
变量中。这样就能够完整的输出。结果为:我的年龄是: 88
。
根据这个结果可以推出,该函数可以被多次调用。例如:
def get_user(type,value):
"""用户信息"""
print("我的" + type + "是: " + value)
get_user("年龄",'18')
get_user("体重",'100')
get_user("身高",'180')
get_user("性别",'男')
输出的结果是:
我的年龄是: 18
我的体重是: 100
我的身高是: 180
我的性别是: 男
需要注意的是传参的位置很重要。如果传参顺序出错,就容易出现笑话。
例如:
def get_user(type,value):
"""用户信息"""
print("我的" + type + "是: " + value)
get_user("年龄",'18')
get_user("100",'体重')
get_user("100",'身高')
get_user("男",'性别')
运行的结果:
我的年龄是: 18
我的100是: 体重
我的100是: 身高
我的男是: 性别
关键字实参
关键字实参是传递给函数的名称—值对。直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
代码示例:
def get_user(type,value):
"""用户信息"""
print("我的" + type + "是: " + value)
get_user("年龄",'18')
get_user(value="18",type = 'age')
运行结果
我的年龄是: 18
我的age是: 18
默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python
将使用 指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。
代码示例:
def get_user(type,value = '19'):
"""用户信息"""
print("我的" + type + "是: " + value)
get_user("年龄",'18')
get_user("年龄") #没有传值
运行结果:
我的年龄是: 18
我的年龄是: 19
使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。 这让Python依然能够正确地解读位置实参。
等效的函数调用
鉴于可混合使用位置实参、关键字实参和默认值,通常有多种等效的函数调用方式。基于这种定义,在任何情况下都必须给函数提供实参;指定该实参时可以使用位置方式,也可以使用关键字方式。同样,指定该实参时可以使用位置方式,也可以使用关键字方式。
返回值
函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回 的值被称为返回值。在函数中,可使用return
语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成,从而简化主程序。
返回简单值
代码示例:
def get_user_info(type,info):
"""返回用户信息"""
user_info = "我的" + type + "是: " + info
return user_info.title()
user_info = get_user_info('身高','190')
print(user_info)
运行结果:
我的身高是: 190
返回一条字符串类型的用户的信息,然后赋值给变量user_info
,最后打印输出。
让实参变成可选的
在某些时候我们的参数可能不是必选,但是需要设置默认值就可以决定是否需要传参。
返回字典
将用户的信息存储在字典中。
def build_person(first_name, last_name):
"""返回一个字典,其中包含有关一个人的信息"""
person = {'first': first_name, 'last': last_name}
return person
musician = build_person('jimi', 'hendrix')
print(musician)
同时该字典还可以不断的增加。例如新增返回年龄。
调用函数:
def build_person(first_name, last_name,age=''):
"""返回一个字典,其中包含有关一个人的信息"""
person = {'first': first_name, 'last': last_name}
if age:
person['age'] = age
return person
musician = build_person('jimi', 'hendrix',age=19)
print(musician)
返回结果:
{'first': 'jimi', 'last': 'hendrix', 'age': 19}
原文链接:你好我是森林
欢迎转载分享,但请标记来源,谢谢。
