1.使用def进行函数定义,告诉python要进行接下来要写一个函数的函数名是什么。函数名后的括号里填可能需要的信息,最后以冒号结束。冒号后的缩进是函数体。name是形参,代表函数完成动作需要的那些信息。调用函数时携带的‘D’才是实参,是具体的信息。
def hello_world(name,act):
"""展示问候""" #文档字符串 注释
print(name+" "+act+":Hello World!")
hello_world('D','say') #调用函数
hello_world('C','shout') #可以多次调用函数
传递实参有很多方法,形实顺序对应的位置实参法(见上),实参由变量名和值组成的关键字实参法(见下),还可以使用列表,字典等方法。
def hello_world(name,act):
"""展示问候""" #文档字符串 注释
print(name+" "+act+":Hello World!")
hello_world(name='D',act='say') #调用函数
hello_world(act='shout',name='C') #不关心位置顺序
当某个实参每次都使用时,可以直接在形参上指定默认值。
def hello_world(name,act='say'):
"""展示问候""" #文档字符串 注释
print(name+" "+act+":Hello World!")
hello_world(name='D') #调用函数
hello_world(name='C',act='shout') #想改变预先设置的实参也可以
一般函数都是处理一些事物,得到的结果可能不需要直白的输出,而是返回,供其他操作使用。函数返回的值就叫返回值,使用return可以将返回值返回到调用函数的代码
def get_name(firstname,lastname,minname=''): #如果没有中间名可以将中间名形参放到最后且传空参
"""返回全名"""
fullname = firstname+minname+lastname
return fullname.title()
FUllname = get_name('D','C') #调用返回值的函数需要一个变量储存返回值
print(FUllname)
FUllname = get_name('D','c','o')
print(FUllname)
也可以返回字典
def get_name(firstname,lastname,minname=''): #minname是可选形参,默认为空
"""返回字典,包含的信息是全名"""
people = {'fname':firstname,'lname':lastname}
if minname:
people['minname'] = minname
return people
Fname = get_name('D','o','C')
print(Fname)
一些情况下需要传递列表,如果函数对列表进行修改,那么就会永久生效,方便处理大量的数据。使用for或者其他方法可以使列表的每个值都经过处理。如果希望保留原始列表可以使用切片得到副本,使用方便进行处理操作。
def get_name(names):
for name in names:
msg = "Hello"+name.title()
print(msg)
Fname = ['D','o','C']
get_name(Fname)
有时候可能不知道有多少实参,那么需要使用如下代码。“*”告诉python创建一个空元组用来封装收到的值。如果函数要接收不同类型的实参,那么必须将接收任意量的形参放到最后,其他实参被接收后其余的都封装到其中。
def get_name(firstname,*lastnames):
print("\nHer name is "+firstname)
for lastname in lastnames:
print(lastname)
get_name('Dracula','Claude')
get_name('David','a','b','c')
有可能知道要接收大量元素但不知道接收什么,那么可以将函数写为键值对,使用**创建空字典来储存。
def get_name(firstname,lastname,**other):
file = {}
file['fname'] = firstname
file['lname'] = lastname
for key,value in other.items():
file[key] = value
return file
ufile = get_name('Dracula','Claude',loc='a',id='001')
print(ufile)