一、函数基本定义
定义函数的目的是为了让一段代码可以被重复使用
函数定义的语法:
def函数名([参数,参数.....]):
函数主体代码(多行代码)
[return [返回值]]
注:函数中的函数体都通过缩进来定义
实例一:定义一个无参有返回值的函数
#coding=UTF-8
defget_info():#获取信息的函数
return "我的第一个函数"
print(get_info()) #调用函数,直接返回内容输出
程序执行结果:
二、函数的参数传递
实例一:
#coding=UTF-8
defecho(title,url):return "网站名称:%s,主页地址:%s"%(title,url)print(echo("百度","www.baidu.com"))print(echo(url="www.baidu.com",title="百度"))
实例二:定义参数的默认值
# coding=UTF-8defecho(title,url="www.taobao.com"):
return"网站名称:{},主页地址:{}".format(title,url)
#打印输出指定标题及网址
print(echo("百度","www.baidu.com"))
#打印输出不指定网址
print(echo("淘宝"))
执行结果:
注:如果在参数上定义了默认值,那么该参数一定要放在参数列表的最后
实例二:使用函数修改列表
# coding=UTF-8def change_data(list):
list.append("one") #修改列表内容
#定义infos列表
infos= ["tow"]
change_data(infos) #函数扩充列表内容
print(infos) #输出infos列表
执行结果:
三、可变参数
按照之前的参数形式,只要函数定义了几个参数,在函数调用的时候就必须明确的传递几个参数,在Python中为了灵活的使用参数提供有可变参数的形式。
可变参数都使用元组来进行接收。
实例一:使用元组(使用“*”标记来声明)的可变参数实现累加及累减的操作
# coding=UTF-8def math(cmd,*numbers): # *代表numbers定义的是一个元组
print("可变参数numbers的类型:%s,参数的数量:%d" %(type(numbers),len(numbers)))sum = 0#保存计算结果if cmd == "+":for num innumbers:sum +=numelif cmd == "-":for num innumbers:sum -=num
returnsumprint("数字的累加结果:%d" %math("+",1,2,3,4,5,6,7,8,9))
print("数字的累减结果:%d" %math("-",1,2,3,4,5,6,7,8,9))
执行结果:
实例二:使用字典(可以使用“**”标记来声明)来实现关键字参数的传递
# coding=UTF-8def print_info(name,**urls):"""定义输出函数
param name:用户姓名
param urls:一组key=value的组合 网站名=网址""" print("用户姓名:%s" %name)
print("喜欢的网站:")for key,value inurls.items():
print("\t|-%s:%s" %(key,value))
print_info("风之老凌",baidu="www.baidu.com",taobao="www.taobao.com")
执行结果:
四、定义混合参数
函数中参数的类型可以有很多种:必选参数、默认参数、可变参数、命名关键字参数和关键字参数,这些参数在定义是也要考虑到其各自的语法参数问题。
实例一:
# coding=UTF-8def print_info(name,age,*inst,**urls):
print("用户姓名:%s,年龄:%s" %(name,age))
print("用户的兴趣:",end="")for item ininst:
print(item,end="、")
print("\n喜欢的网站:")for key,value inurls.items():
print("\t|-%s:%s" %(key,value))
print_info("风之老凌",20,"看书","写作",baidu="www.baidu.com",taobao="www.taobao.com")
执行结果:
五、函数的递归调用 (如非必要情况不建议使用递归)
递归调用的处理条件
需要明确的定义一个递归调用的结束条件
每一次调用的时候都需要修改相应的参数的内容
实例一:使用递归计算1-99的和
# coding=UTF-8defsum(num):if num == 1:
return1return num+ sum(num -1)
print("1-99的和:%d" %sum(100))
执行结果: