函数
函数的格式 :
def 函数名() :
函数体
传递实参
传递参数的两种方式,位置实参和关键字实参。
位置实参
调用函数时,python必须将函数调用的每个实参都关联到函数定义中的一个形参,为此最简单的关联方式就是基于实参的顺序 , 这种关联方式称为位置实参 。
位置实参的顺序很重要。
关键字实参
关键字实参是传递给函数时以名称值对的方式。关键字实参无须考虑函数调用中的实参顺序,使用关键字实参时,务必准确指定函数定义中的形参名 。
默认值
编写函数时,可以给每个形参指定默认值。在形参列表中先列出没有默认值的形参,再列出有默认值的形参 。
可以将默认值设置成None,视为占位符,如果赋值进行判断,否则视为False跳过判断。
让实参变成可选的
调用这个函数时,如果只想指定姓和名。调用起来非常简单,如果还要指定中间名,就必须确定它是最后一个参数,这样python才能正确的将位置形参关联到形参。
def get_formatted_name(first_name, last_name, middle_name=''):
"""Return a full name, neatly formatted."""
if middle_name:
full_name = f"{first_name} {middle_name} {last_name}"
else:
full_name = f"{first_name} {last_name}"
return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')
print(musician)
musician = get_formatted_name('john', 'hooker', 'lee')
print(musician)
传递任意数量的实参
形参名toppings中的号让python创建了一个名为toppings的空元组,将所有收到的值都封装到这个元组中。
必须将接受任意数量实参的行参写到最后,python会先匹配位置实参和关键字实参,最后把余下的实参都放到一个行参中。(你通常会看到== 形参名args== ,就是收集任意数量的位置实参)
def make pizza(*toppings):
print(toppings)
使用任意数量的关键字实参
形参**uesr_info中的两个星号让python创建一个user_info的空字典。(你经常看到形参名 **kwargs,就是任意数量的关键字实参)
def build_profile(first, last, **user_info):
"""Build a dictionary containing everything we know about a user."""
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)