欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python函数参数和返回值

程序员文章站 2024-03-17 16:34:34
...

- 函数参数和返回值的作用

函数:封装功能独立的代码,在需要时通过函数名被调用
参数:外界希望在函数内部处理的数据
返回值:函数完成工作后,给调用者的一个结果

函数根据有无参数和返回值,可以相互结合,共有4种组合形式
1.无参数,无返回值
2.无参数,有返回值
3.有参数,无返回值
4.有参数,有返回值

定义函数时,是否接收参数,或是否返回结果,根据实际的功能需求决定
1.如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部
2.如果希望一个函数执行完成后,向外界汇报执行结果, 就可以增加函数的返回值

- 函数返回值(进阶)

  • 返回多个结果
    在函数中使用return关键字可以返回结果
    那么如何让函数执行后返回多个结果?

    def test():
        print('第一名同学是...')
        name1 = 'zhangsan'
        print('第二名同学是...')
        name2 = 'lisi'
        ### 元组可以包含多个数据,使用元组让函数一次返回多个值
        ### 如果函数返回的类型是元组,小括号可以省略
        ### return (name1,name2)
        return name1,name2                       ## 函数返回一个元组,包含name1和name2的值
    name = test()                                ## name接收函数返回值 name数据类型是元组
    print(name)
    

    函数返回类型是元组,同时希望单独的处理元组中的元素,使用多个变量,一次接收函数的返回结果
    比如,我想单独显示同学1或同学2,那怎么编写呢?我们添加以下代码

    gl_name1,gl_name2 = test()                   ## 使用多个变量一次接收函数的返回结果
    print(gl_name1)                              ## 注意:多变量接收结果时,变量的个数应该
    print(gl_name2)                              ## 和元组中元素的个数保持一致
    
  • 面试题- -交换数字

    a = 6
    b = 100
    # python 专有方法;等号右边是一个元组,将小括号省略
    a, b = b, a
    

- 函数参数(进阶)

  • 函数内部参数赋值不影响外部实参

    def test(num, num_list):
        print('函数内部代码')
        num = 100                                                       ## 函数内参数
        num_list = [1, 2, 3]                                            ## 函数内参数
    
        print(num)
        print(num_list)
        print('函数执行完成')
    gl_num = 99
    gl_list = [4, 5, 6]
    test(gl_num, gl_list)
    print(gl_num)
    print(gl_list)
    
    #####################
    函数内部代码
    100
    [1, 2, 3]
    函数执行完成
    99                                                                  ## 不影响外部参数num
    [4, 5, 6]                                                           ## 不影响外部参数num_list
    
  • 修改内部参数会影响外部实参
    若传递的参数是可变类型,在函数内部,使用方法修改数据的内容,同样会影响到外部的数据

    def test(num_list):
    	print('函数内部')
    	num_list.append(9)                              ## 使用.append()方法会改变外部参数数据
    	print(num_list)
    	print('函数完成')
    
    gl_list = [1,2,3]
    test(gl_list)
    print(gl_list)
    ######################
    函数内部
    [1,2,3,9]
    执行完成
    [1,2,3,9]
    
  • 面试题- - +=

    def test(num, num_list):
        print('函数内部')
        num += num
        num_list += num_list                   ##  列表变量调用"+="
        # num_list.extend(num_list)                    ## 本质上是在执行列表变量的extend方法
        print(num)
        print(num_list)
        print('函数完成')
    gl_num = 9
    gl_list = [1,2,3]
    test(gl_num, gl_list)
    print(gl_num)
    print(gl_list)
    ########################
    函数内部
    18
    [1, 2, 3, 1, 2, 3]
    函数完成
    9                                     ## 整型,字符的'+='不会影响外部实参
    [1, 2, 3, 1, 2, 3]                    ## 函数内部列表的'+='影响了外部列表实参,等同于使用方法extend()
    
  • 指定缺省参数
    定义函数时,给某个参数指定一个默认值,具有默认值得参数就叫缺省参数(也叫默认参数
    调用函数时,如果没有传入缺省参数的值,则在函数内部使用该缺省参数的默认值
    将常见值设置为参数缺省值,达到简化函数的调用,如:

    def print_info(name, sex = True):                             ## 缺省参数sex
        sex_text = '男生'
        if not sex:                                               ## 指定sex值为False时,执行该行命令
            sex_text = '女生'
        print('%s 是 %s' % (name, sex_text))
    print_info('小明')
    print_info('小嫣', False)
    ##########################
    小明是男生
    小嫣是女生
    
  • 缺省函数注意事项
    1 .缺省参数定义位置: 必须在形参列末尾

    def print_info(name, title, sex=True):                        ## sex缺省参数必须在参数列末尾
    

    2 .调用多个缺省参数的函数:调用时,必须指定参数名

    def print_info(name, title='doc', sex=True):
        sex_text = '男生'
        if not sex:
            sex_text = '女生'
        print('%s%s是%s' % (title, name, sex_text))
    print_info('小明', title='dri', sex=True)               ## 正确写法
    print_info('小嫣', False)           ## 错误写法
    ###############################
    dir小明是男生
    False小嫣是一个男生          ## 因调用时,第二个参数Flase没指定传给谁,就默认传给了title