一、函数定义
输入一定的数据后,能够根据里面的执行步骤,算出另一些数据的值
def add(a,b): '''两个数相加''' c = a + b return c sum = add(3,4) print(sum)
3)函数返回值return
函数里面的return表示函数的返回值,在调用函数之后可以通过变量进行接收
函数体遇到return就终止运行,相当于for/while中的break
def add(a,b): if a > 100: return a + b #return终止函数,后面就不会执行 return a + b*3 print(add(150,50))
函数的输出数据是由return决定的,函数没有retruen,得到的数据就是None
def add(a,b): c = a + b print(add(1,2)) #结果是none
#定义一个有返回值的append函数 def append(origin_list,element): origin_list.append(element) return origin_list print(append(['zjx'],'python')) #结果['zjx', 'python']
注意:没有定义的函数,无法调用。
4)函数的参数
形式参数:函数在定义的时候写的参数,相当于变量名,如上的origin_list
实际参数:函数在调用的时候写的参数,他是值,如上的['zjx']
函数从调用的角度来说,分为形式参数和实际 参数。形参是指函数创建和定义过程中小括号里的参数;而实参指得是函数在被调用过程中传递进来的参数
def add(a,b): c = a + b print(add(1,2)) #a,b是形参,1,2是实参
位置参数:形式参数和实际参数要一一按照顺序对应
def append(origin_list,element): origin_list.append(element) return origin_list print(append(['zjx'],'python'))
5)函数文档(.__doc__)
函数文档的作用是描述该函数的功能,给函数写文档是为了让别人可以更好的理解你的函数。
函数文档字符串可以通过特殊属性 ._ _doc_ _
6)默认参数
在函数定义的时候给形式参数一个默认值,有实参时按实参,无实参时按形参的默认值
可以简化函数调用过程,只需要传入少量参数就可以实现调用过程
如果调用函数的时候传入了这个实际参数,默认值不会生效
默认参数必须放到为位置参数的后面
def append(origin_list,element="hello"): origin_list.append(element) return origin_list print(append(['zjx']))
7)关键字参数
可以提高函数调用时候的可读性,更加容易理解实际参数的意义
关键字的名字就是形式参数
关键字参数区别位置参数:可以不按照顺序调用
关键字参数也要放到位置参数后面
def get_name(first_name,middle_name,last_name): '''获取名字''' return first_name + middle_name + last_name print(get_name( middle_name = 'jing',first_name='zhang',last_name='xuan')) #关键字参数在调用的时候,可以不按照顺序
8)可变长参数
1.位置可变长参数 *args 函数里面(元组)
*names:在函数内部的表现形式:names是一个元组
可以接收从函数调用的时候,多余的位置参数
def get_name(firstname,*names): print(firstname) print(names) return firstname get_name('zhang','jingxue','好看') ''' 结果: zhang ('jingxue', '好看') '''
可不可以只有*names 可以的
def get_name(*names): print(names) get_name('jingxue','好看') ''' 结果: ('jingxue', '好看') '''
2.关键字可变长参数 ** kwargs函数里面得到的是{字典}
# 调用函数时**kwargs不传入参数,返回的是空字典{}
def get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang') ''' 结果: ('zjx', 'wang') {} '''
# 调用函数时**kwargs传入参数,返回的是字典{},以key-value形式存储
def get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang',middle='hello',last='python') ''' 结果: ('zjx', 'wang') {'middle': 'hello', 'last': 'python'} '''
注意:两个*代表关键字参数,一个*号代表位置参数。关键字参数要放在位置参数后面
位置可变长参数*names 要放在关键字可变长参数**kwargs的前面