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