函数基础
一、函数的定义
1.1函数的概念
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。
def 函数名 ():
pass 函数体
1.2 函数的定义和调用
#函数的定义阶段 def my_max(x,y): return x,y #函数调用阶段 res=my_max(10,25) print(res)
二、函数的返回值
2.1 return 不写return的情况下,会默认返回一个None,
1 #函数定义 2 def mylen(): 3 """计算s1的长度""" 4 s1 = "hello world" 5 length = 0 6 for i in s1: 7 length = length+1 8 return length 9 10 #函数调用 11 str_len = mylen() 12 print('str_len : %s'%str_len)
2.1 返回多个值、任意数据类型
1 def ret_demo1(): 2 '''返回多个值''' 3 return 1,2,3,4 4 5 6 def ret_demo2(): 7 '''返回多个任意类型的值''' 8 return 1,['a','b'],3,4 9 10 ret1 = ret_demo1() 11 print(ret1) 12 ret2 = ret_demo2() 13 print(ret2)
2.3 返回的多个值会被组织成元组被返回,也可以用多个值来接收
1 def ret_demo2(): 2 return 1,['a','b'],3,4 3 4 #返回多个值,用一个变量接收 5 ret2 = ret_demo2() 6 print(ret2) 7 8 #返回多个值,用多个变量接收 9 a,b,c,d = ret_demo2() 10 print(a,b,c,d) 11 12 #用多个值接收返回值:返回几个值,就用几个变量接收 13 a,b,c,d = ret_demo2() 14 print(a,b,c,d) 15 16 多个返回值的接收
三、函数参数
#函数的参数分类
#形参:在定义阶段括号内指定的参数,相当于变量名
#实参:在调用阶段括号传入的值称之为实参,相当于值
#在调用阶段,实参的值绑定形参,在调用结束后解除绑定
3.1位置参数
3.1.1按照从左到右的顺序依次定义的参数
3.1.2位置形参:必须被传值,多一个少一个都不行
3.1.3位置实参:与形参一一对应传值
1 def num1(x,y): 2 print(x,y) 3 4 5 num1(1,4)
3.2 关键字参数
3.2.1 在函数调用时,按照key=value的形式定义是的实参
3.2.2 指名道姓地给形参传递,不在依赖与位置
1 ef foo(name,age,sex): 2 print(name,age,sex) 3 # foo("tom",22,'male') 4 foo(sex="male",name="robin",age=12)
#注意:
#1关键字实参必须在位置实参的后面
#不能未同一个参数赋多个值
3.2.3默认参数,在函数定义的阶段,就已经为形参赋值
3.2.3.1 定义阶段已经有了值意味着调用阶段可以不用传值
3.2.3.2 位置参数通常用于经常变化的参数,默认参数用于通常不变的参数
1 def info(x,y=2): 2 print(x,y) 3 4 info(1)
注意:
1)默认参数的值只在定义时被赋值一次
2)默认参数的值通常应该是不可变类型
3.2.4
def trans_para(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) trans_para("jinxin",12,[1,2,3,4],[3,4,],(1,4,7),{"a":"123","c":456},country="china") 动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。
本文来自博客园,作者:鱼丸粗面没鱼丸,转载请注明原文链接:https://www.cnblogs.com/Robi-9662/p/8883788.html