python3笔记–函数的使用
1、定义函数:
def 函数名(参数列表):
函数体
形参–函数完成其工作所需的一项信息
实参–调用函数时传递给函数的信息
def name(username):#函数内部的参数为形参
print('姓名:' , username.title())
name('alice')#调用函数时,传递给函数的信息
输出:姓名: Alice
2、参数传递:
①位置参数:传入的参数(实参)按照形参的顺序传递。
注1:若是实参类型是同一类型,则结果会与预期不符。
注2:如果实参类型是不同类型,且没有按照顺序传递实参则会在程序运行过程中报错。
②关键字参数:传入参数(实参)可以不考虑顺序。在传入实参时将名称与值关联。
例:让输出结果为name为Alice,输出结果age为20。
def name(username,age):
print('Name:' , username.title())
print('Age:' , age)
name(age = 20,username = 'alice')#按照关键字传入实参不需要考虑顺序
输出:
Name: Alice
Age: 20
③默认参数:在定义函数时,直接给其中一个参数一个默认的值,若调用函数的时候没有传递这个参数,则采用默认值。
def name(username,age = 18):
print('username:' , username.title())
print('age:' , age)
'''函数的重复调用'''
name('alice',20)#使用函数调用时传入的参数
print('\n')
name('alice')#使用默认参数
输出:
username: Alice
age: 20
username: Alice
age: 18
④等效的函数调用:位置参数、关键字参数、默认参数可混合使用。
⑤不定长参数:加了一个星号(*)的参数会以元组(tuple)的形式导入。加了两个星号(**)的参数会以字典(dictionary)的形式导入。
例:以元组形式导入
def name(username,*hobby):
print('username:' , username.title())
print('hobby:' , hobby)
name('tom')
print('\n')
name('alice','playgames','football','basketball')
输出:
username: Tom
hobby: ()
username: Alice
hobby: ('playgames', 'football', 'basketball')
注:例如上述当没有给*hobby指定参数时,它就是一个空的元组。
例:以字典形式导入
def name(username,**hobby):
print('username:' , username.title())
print('hobby:' , hobby)
name('tom')
print('\n')
name('alice',intersting = 'playgames',hobby = 'football')
输出:
username: Tom
hobby: {}
username: Alice
hobby: {'intersting': 'playgames', 'hobby': 'football'}
⑥传递列表
向函数中传递参数列表,列表可能是名字、数字、或者更复杂的对象(比如:字典)。将列表传递给函数后,就可以之间访问其中的内容。
def users(usernames):
for name in usernames:
message = "Hello," + name.title()
print(message)
names = ['alice','tom','jack','rose']
users(names) #调用函数将列表传输其中,并且直接访问
输出:
Hello,Alice
Hello,Tom
Hello,Jack
Hello,Rose
3、匿名函数
使用lambda来创建匿名函数,匿名函数是指不在使用def语句这样的标准形式定义函数。
①lambda简述:
★lambda只是一个表达式,函数体比def简单的多。
★lambda的主体是一个表达式,而不是一个代码块。仅能在lambda表达式中封装有限的逻辑进去。
★lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
②语法结构
lambda [参数1[,参数2,…参数n]]:表达式
例:
#使用lambda定义函数
sum = lambda a,b : a + b
#调用sum函数
print('Add:' , sum(2,3))
输出:Add: 5
4、返回值(return):以举例形式说明
①返回简单值:
def name(first_name,last_name):
full_name = first_name + ' ' + last_name
return full_name.title()#使用renturn返回简单值
username = name('thomas','edison')
print(username)
输出:Thomas Edison
②利用条件控制语句使得实参变成可选的
def name(first_name,last_name,middle_name = ''):#使用默认参数,并且置为空字符,使得参数可选
if middle_name:
full_name = first_name + ' ' + middle_name + ' ' + last_name
else:
full_name = first_name + ' ' + last_name
return full_name.title()
username1 = name('thomas','edison','alva')
print(username1)
username2 = name('thomas','tom')
print(username2)
输出:
Thomas Alva Edison
Thomas Tom
③返回字典
def name(first_name,last_name):
person = {'first_name':first_name,'last_name':last_name}#使用变量存储为字典的形式
return person
username = name('thomas','edison')
print(username)
输出:{'first_name': 'thomas', 'last_name': 'edison'}