python|def函数的使用

def函数的使用 def函数 1. 定义 如果在开发的过程中,需要使用某一部分代码,但是代码的相似度很高,为了提高代码的复用,把具有独特功能的代码块进行封装,组成一个小的功能模块,这就是函数
2. 函数的格式

def 函数名(参数1,参数2): 函数体注意点: 1.def是声明,在创建函数 2.函数名,方便调用 3.函数体,真正的功能模块 4.函数的调用,函数名([参数])

3 函数的参数与返回值 3.1 有参数,有返回值
3.2 有参数,无返回值
【python|def函数的使用】3.3 无参数,无返回值
3.4 无参数,有返回值
注意点: 1.python 中没有强制要求一定要有返回值 2.返回值和参数按照具体的需求来 3.如果return返回多个数据,数据会被自动打包成元组 4.定义的时候,函数小括号中的参数,用来接收参数使用,形参 5.调用的时候,函数小括号中的参数,用来传递参数给函数使用,实参

4. 匿名函数 创建小型函数
4.1 语法规则
lambda 参数1,参数2:表达式 print((lambda x,y,z:sorted([x,y,z])[-1])(22,11,33))

4.2 调用
1.在sort等方法中,直接定义,方法在执行的时候,自动调用 2.(lambda表达式)(实参1,实参2,。。。) 3.匿名函数自动返回表达式的执行结果,自动将返回值抛出

4.3 map 将函数应用在可迭代对象的每一个元素上
list1 = [1,2,3,4,11,22,5,6]def fun1(x): print(x) return print(list(map(lambda x:x+5,list1)))

4.4 filter 过滤
将符合结果为True的结果返回
print(list(filter(lambda x:x%2==0,list1)))

4.5 reduce 实现汇总的效果
list1 = [1,2,3,4,11,22,5,6] from functools import reduce print(reduce(lambda x,y:x*y,list1,100))

5. LEGB原则 5.1 局部变量
1.局部变量,是在函数的内部定义 2.局部变量的使用范围是,在当前的函数体内正常使用,在函数的外部不可以使用 3.相同的局部函数之间互不影响,因为它的作用域就是当前函数

5.2 全局变量
num = 100 def func(): ''' 修改全局变量 :return: ''' globalnum print('--------->修改之前的全局变量:',num) num = 1 print('--------->修改之后的全局变量:',num)if __name__ == '__main__': print('--------->修改之前的全局变量:',num) func() print('--------->最后查看num:', num)注意点: 1.全局变量定义在所有的函数之外,所有的函数都可以使用全局变量 2.如果在函数中需要对全局变量进行操作,需要先声明使用的是全局变量

6. 函数的参数注意点 6.1 缺省参数
def func1(param1,param2=None,param3=None): print(param1) print(param2) print(param3)if __name__ == '__main__':func1(1,2)注意点: 1.在形参中默认有值的参数,叫做缺省参数 2.缺省参数一定要在参数列表的最后面 3.缺省参数的规则是,有就用传递的,没有就使用默认的

6.2 不定长参数
def func2(*args,**kwargs): print('-'*50,args) print('-'*50,kwargs)def func3(name,phone=None,*args,**kwargs): print('name',name) print('phone',phone) print(args) print(kwargs)if __name__ == '__main__': # func2() # func2(1,2,3,4) # func2('jave',num='张三',age='18')func3('zs') func3('zs','qh','1123351')注意点: 1.*args将所有的未命名的参数收集,并打包成元组 2.**kwargs将所有的kay=value形式的参数,收集,并且打包成字典 3.如果存在缺省参数,建议,缺省参数放到*args后面,但是**kwargs肯定在列表参数的最后一位

    推荐阅读