函数的调用函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。能提高应用的模块性,和代码的重复利用率。
定义函数:
def 函数名(参数1,参数2): '''函数说明注释''' 函数体代码 return 返回值def :定义函数的关键字
函数名:与变量名的命名一样 尽量做到见名知意
括号:定义函数时函数名后必须加括号
参数:定义函数括号内可以写多个参数,也可以不写,用于接收外界传递给函数体代码内部多数据
函数注释:用于介绍函数的主题功能和具体用法
函数体代码:函数的核心用来实现功能的代码段
return :控制函数的返回值
ps:函数必须先定义之后再使用!!!
函数的分类1)函数必须先定义,才能调用,否则会报错
2)无参数时函数的调用:函数名(),有参数时函数的调用:函数名(参数1,参数2...)
3)不要在定义函数的时候在函数体里面调用本身,否则会出不来,陷入循环调用
4)函数需要调用函数体才会被执行,单纯的只是定义函数是不会被执行的
5)函数名加括号执行的优先级最高(定义阶段除外)
函数的返回值1.内置函数
解释器提前帮你定义好的函数 可以直接调用 len()、input()、print()......
内置函数可以直接调用,数据类型的内置方法必须使用数据类型点的方式才可以调用
2.自定义函数
1)空函数
函数代码没有任何功能 代码主体用pass顶替
def jump():
pass2)无参函数
函数定义阶段括号内没填写参数
def jump():
print('我没参数直接函数名加括号调用')
jump()
3)有参函数
函数定义阶段括号内填写参数
def jump(a,b):
print('函数名加括号并给数据值进行调用')
jump(1,2)
函数的参数简介:用 def 语句创建函数时,可以用 return 语句指定应该返回的值,该返回值默认为元组类型。需要注意的是,return 语句在同一函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行。
语法格式:
return[返回值]1.函数体代码没有return关键字:默认返回None
def add(): print('from func') res = add() print(res) # 打印结果 None2.函数体代码有return关键字:后面不写 返回None
def add(): print('from func') return res = add() print(res) # 打印结果 None3.函数体代码有return关键字:return后面是啥就返回啥
def add(): return 111 res = func() print(res) '''打印结果:111''' '''后面根什么数据值就返回什么数据如果是变量则需要找到相对应的数据值返回''' def add(): return 1,2,3,4 res = func() print(res) '''打印结果:(1,2,3,4)''' '''返回值默认逗号隔开,自动组织成元组返回'''4.函数体代码遇到return关键字会立刻结束运行
def func(): print('上') return 111 print('下') func() '''打印结果:上''' '''遇到return直接结束不运行print('下')'''
1.参数简介1.形式参数
在函数的定义阶段括号内填写的参数简称:’形参‘
2.实际参数
在函数的调用阶段括号内填写的参数简称:‘实参’
ps:形参相当于变量名;实参相当于数据值;在调用阶段形参会临时与实参进行绑定,运行结束立即解除。
2.位置参数1.位置形参
在函数定义阶段括号内从左往右依次填写的变量名称之为位置形参
2.位置实参
在函数调用阶段括号内从左往右依次填写的数据值称之为位置实参
def num(a,b,c): print(a) print(b) print(c) num(1,2,3) '''打印结果:1,2,3''' def num(a,b,c): print(a) print(b) print(c) name = 'aaa' num(name,2,3) '''打印结果:aaa,2,3''' '''参数可以是数据值也可以是绑定了数据值的变量名''' '''位置形参传值的时候必须每一个都对应,多一个少一个都不行'''3.关键字参数在函数定义阶段括号内以什么等于什么的形式传值称之为关键字实参
def num(a,b): print(a,b) num(1,2) # 1,2 num(b=1,a=2) # 2,1 num(b=1,2) # 报错 num(2,a=1) # 1,2 '''位置实参必须在关键字实参的前面(无论是形参还是实参都遵循简单的在前面,复杂的在后面) 同一形参在一次调用中只能传一次'''4.默认值参数在函数定义阶段括号内以什么等于什么的形式填写的形参称之为默认值形参
def num(name,greet='hello'): print('%s%s'%(greet,name)) num('world') num('Bob','how are you') # 打印结果 '''helloworld''' '''how are youBob'''ps:当用户给参数值时用用户输的,没给就用定义好默认的;函数定义阶段给形参绑定值后续阶段就可以不用传。
5.可变长参数可变长参数指的是在调用函数时,传入的参数个数可以不固定.。
* 在形参中
形参中的*会将溢出的位置实参全部接受,然后以元组的形式存储,然后把元组赋值给*后的参数,注意*后的参数名约定成俗成为args
**在形参中
形参中的**会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给**后的参数,注意**后的参数名约定成俗为kwargs
def sum_num(res,*args): print(res) print(args) sum_num(0,2,3,4,5)#就一个形参a接受实参的值,故全部给args # 打印结果 0 (2, 3, 4, 5) ----------------------------------------------------------------------------------- def new_name(**kwargs): print(kwargs) new_name(name = 'Bod') new_name(name = 'Bod',age = 18) new_name(name = 'Bod',age = 18,hobby = 'run') # 打印结果 {'name': 'Bod'} {'name': 'Bod', 'age': 18} {'name': 'Bod', 'age': 18, 'hobby': 'run'}



