def函数的使用

def函数

1. 定义

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

2. 函数的格式

def 函数名(参数1,参数2):
	函数体

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

3 函数的参数与返回值

3.1 有参数,有返回值

3.2 有参数,无返回值

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:
    '''
    global  num
    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肯定在列表参数的最后一位
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐