返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础之函数参数与返回值进阶
  • 160
分享到

Python基础之函数参数与返回值进阶

进阶函数返回值 2023-01-31 00:01:18 160人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部; 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值。 函数的返回值 进阶 利用元组返回多个函数值 可以用元组让函数返回

参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部;
返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值。

函数的返回值 进阶

利用元组返回多个函数值

可以用元组让函数返回多个值;如果函数返回的类型时元组,那么小括号可以省略;比如,以下两个就相等:
return (temp, humidity) = return temp, humidity

def measure():
    """
    测量温度和湿度
    :return: 返回温度和湿度结果的元组
    """
    print("开始测量")
    temp = "37"
    humidity = "50"
    print("测量结束")

    # 可以用元组让函数返回多个值;如果函数返回的类型时元组,那么小括号可以省略
    # return (temp, humidity)
    return temp, humidity


result = measure()
print("温度为:", result[0])
print("湿度为:", result[1])

用多个变量接收函数的返回值

  • 如果函数返回的类型是元组,同时希望单独的处理元组的元素时,可以用多个变量,一次性接收函数的返回结果;
  • 注意,多个变量接收返回结果时,变量个数应该和函数返回元组元素个数一致,否则报错;

多个变量接收函数返回值示例

def measure():
    """
    测量温度和湿度
    :return: 返回温度和湿度结果的元组
    """
    print("开始测量")
    temp = "37"
    humidity = "50"
    print("测量结束")

    return temp, humidity


result = gl_temp, gl_humidity = measure()
print("温度为:", gl_temp)
print("湿度为:", gl_humidity)
print("温度为:", result[0])
print("湿度为:", result[1])

函数的参数进阶

函数内部变量和参数的关系

函数内部形参重赋值不会影响外部实参

只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用

  • 函数内部针对参数的赋值不影响实参在外部的使用,但在函数内部 同名局部变量会覆盖形参;
  • 我们可以理解为局部变量和全局变量,传进来的就相当于全局变量,在函数内对参数重新赋值,就相当于在函数内部定义一个同名局部变量;

形参重赋值示例

def test(num, num_list):
    print("现在是函数内部")
    
    num = 1000
    num_list = [22, 33, 44, 55]
    print(num)
    print(num_list)


num = 10
num_list = [1, 2, 3, 4]
test(num, num_list)  # 1000 [22, 33, 44, 55]

print(num)  # 10
print(num_list)  # [1, 2, 3, 4]

函数内部形参修改会影响外部实参

如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部的数据。

但如果我们针对可变类型参数 只用方法改变参数数据,不重新赋值,就会影响到形参在函数外部的使用了;
这是因为我们在传参是传的是变量的引用,而在函数内部也没有对形参进行局部变量覆盖,一直用的就是变量的引用,所以当我们用方法修改可变类型参数时,会直接修改外部的变量。

def test(num_list):
    print("现在是函数内部")
    num_list.append(9)
    print(num_list)


num_list = [2, 4, 6]
print("进入函数前列表:", num_list)
test(num_list)
print("现在是函数外部")
print("从函数出来后列表:", num_list)

# 进入函数前列表: [2, 4, 6]
# 现在是函数内部
# [2, 4, 6, 9]
# 现在是函数外部
# 从函数出来后列表: [2, 4, 6, 9]

列表调用+=本质是extend方法

  • 如果我们在函数内部使用num_list += num_list就相当于num_list.extend(num_list),而列表又是可变类型的变量参数,所以会修改传入的外部的列表;
  • 而我们使用num_list = num_list + num_list时,就不会修改外部的列表变量

extend方法与+= 示例

# 列表调用+=本质是调用extend方法
def test(num, num_list):
    print("进入函数内,尚未修改前的传参变量如下两个")
    print(num)
    print("num_list:", num_list)

    # num_list = num_list + num_list  # 不会修改函数外部的变量
    num_list += num_list
    print("+=修改后的num_list:", num_list)
    pass


num = 10
num_list = [1, 3, 5]
print("原始的num_list:", num_list)
test(num, num_list)

print("函数执行完成后的num_list:", num_list)

# 原始的num_list: [1, 3, 5]
# 进入函数内,尚未修改前的传参变量如下两个
# 10
# num_list: [1, 3, 5]
# +=修改后的num_list: [1, 3, 5, 1, 3, 5]
# 函数执行完成后的num_list: [1, 3, 5, 1, 3, 5]

缺省参数

缺省参数的介绍

  • 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数;
  • 调用函数时,如果没有传入缺省参数的值,则在函数内部 使用定义函数时指定的参数默认值;
  • 函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用。

其实在列表的sort方法,就是使用的缺省参数,默认reverse为True,只有在需要降序的时候才会写reverse = False

缺省参数语法

def 函数名(参数1,参数2,...,参数x=默认值):
    pass

缺省参数的使用示例

指定缺省函数的默认值

def test(name, gender=True):
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s 是 %s" % (name, gender_text))


test("喜羊羊")
test("沸羊羊")
test("美羊羊", gender=False)

# 喜羊羊 是 男生
# 沸羊羊 是 男生
# 美羊羊 是 女生

指定缺省函数的默认值,只需要在函数传参处定义一个赋值语句给定默认值即可;应注意,默认值应该是出现最常见的值;

缺省参数的注意事项

  1. 带有默认值的缺省参数,必须确保 放在参数列表末尾
  2. 在调用参数时,如果有多个缺省参数,需要指定参数名,避免参数对应错误。

调用带有多个缺省参数的函数

def test(name, title="干事", gender=True):
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s 是 %s, 职位是 %s" % (name, gender_text, title))


test("喜羊羊")
test("沸羊羊", "劳动委员")
test("美羊羊", gender=False)
test("暖羊羊", "班长", gender=False)

# 喜羊羊 是 男生, 职位是 干事
# 沸羊羊 是 男生, 职位是 劳动委员
# 美羊羊 是 女生, 职位是 干事
# 暖羊羊 是 女生, 职位是 班长

多值参数

  • 有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数;
  • python中有两种多值参数:参数名前加*对应一个元组,参数名前加**对应一个字典;
  • 一般在给多值参数命名时,习惯使用以下两个名字:*args--存放元组参数;**kwargs--存放字典参数;

多值参数示例

def test(num, *nums_list, **info_dict):
    print(num)
    print(nums_list)
    print(info_dict)


test(1)
test(1, 2, 3, 4, 5, name="zhangsan", gender="boy")

# 1
# ()
# {}

# 1
# (2, 3, 4, 5)
# {'name': 'zhangsan', 'gender': 'boy'}

多值参数求和案例

def sums(*args):
    print(args)
    s = 0
    for num in args:
        s += num
    return s


result = sums(1, 2, 3, 4)
print(result)


# (1, 2, 3, 4)
# 10

元组和字典的拆包

在调用带有多值参数的函数时,如果希望 1.将一个元组变量,直接传递给args 2.将一个字典变量,直接传递给kwargs 的话,就可以使用拆包,简化参数的传递;
拆包的方式是:在元组变量前,增加一个*;在字典变量前,增加**

拆包示例

def test(*args, **kwargs):
    """传入一个元组和一个字典,并对它们分别进行输出"""
    print(args)
    print(kwargs)


t_tuple = (1, 2, 3, 4)
t_dict = {"name": "zhangsan", "age": "20"}

test(t_tuple, t_dict)  # 这个并不能按照我们的想法进行传输
# 用拆包,简化元组/字典变量的传递
test(*t_tuple, **t_dict)  # 这个的和下面是一样的
test(1, 2, 3, 4, name="zhangsan", age="20")

# ((1, 2, 3, 4), {'name': 'zhangsan', 'age': '20'})
# {}

# (1, 2, 3, 4)
# {'name': 'zhangsan', 'age': '20'}
# (1, 2, 3, 4)
# {'name': 'zhangsan', 'age': '20'}

函数的递归

函数调用自身的编程技巧称为递归。

递归函数的特点

  1. 一个函数内部调用自己;(函数内部可以调用其他函数,当然也可以在函数内部调用自己)
    代码特点:
  2. 函数内部的代码是相同的,只是针对参数的不同,处理的结果不同;
  3. 当一个参数满足条件时,函数不再执行;(这个非常重要,通常被称为递归的出口,否则会出现死循环)

函数递归示例

def sums(num):
    print(num)
    if num == 1:
        return
    sums(num-1)


sums(4)  # 4 3 2 1

递归实现数字累加示例

def test(num):
    """计算1+...+num的结果"""
    if num == 1:
        return 1

    temp = test(num-1)
    # 两个相邻数字的相加
    return num+temp


result = test(100)
print(result)

--结束END--

本文标题: Python基础之函数参数与返回值进阶

本文链接: https://lsjlt.com/news/182138.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python基础之函数参数与返回值进阶
    参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部; 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值。 函数的返回值 进阶 利用元组返回多个函数值 可以用元组让函数返回...
    99+
    2023-01-31
    进阶 函数 返回值
  • python基础之函数的返回值
    函数的返回值 返回结果要怎么做,多个结果又要怎么做 # 函数返回值 # 概念:函数执行完以后会返回一个对象,如果在函数内部有return 就可以返回实际值, # 否则将会返...
    99+
    2024-04-02
  • 【Python】函数进阶 ① ( 函数返回多个返回值 | 函数参数传递类型简介 | 位置参数 | 关键字参数 )
    文章目录 一、函数返回多个返回值二、函数参数传递类型1、位置参数2、关键字参数 一、函数返回多个返回值 在函数中 , 如果要 返回 多个返回值 , 可以 在 return ...
    99+
    2023-09-04
    python 开发语言 函数多返回值 位置参数 关键字参数 原力计划
  • Python函数定义/返回值/参数/传参
    1. 函数   函数是对功能的封装   语法:     def 函数名(形参列表):       函数体(代码块, return)     调用...
    99+
    2023-01-31
    函数 返回值 定义
  • python基础之 函数的参数
      一、形参和实参是什么  函数的参数分为形式参数和实际参数,简称形参和实参:  形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。  def func(x,y): #x和y为形参  print(x,y) ...
    99+
    2023-06-01
  • PHP 函数的参数和返回值
    php 函数的参数可以具有类型说明和默认值,而返回值可以返回一个类型说明的值。例如,一个计算两个数字和并返回整数的函数 sum(),它接受两个整数参数,其中一个有默认值 "guest"。...
    99+
    2024-04-13
    参数 php 返回值
  • C++ 函数的参数和返回值
    函数在 c++++ 中通过参数传递数据并通过返回值返回信息:参数:函数定义中声明,允许函数接收外部值。返回值:函数定义中声明,使函数能够将信息返回给调用代码。 C++ 函数的参数和返回...
    99+
    2024-04-12
    参数 函数 c++
  • C语言之函数返回值与参数传递案例教程
    C语言函数返回值与参数传递 一:参数传递 C语言的函数中必不可少的就是参数传递,可以采用传值和传指针两种方式。 1.传值的形式:只是将参数值的拷贝传给函数,并非参数本体如: in...
    99+
    2024-04-02
  • Python基础【高阶函数】
    map(fun,seq) 将seq中的元素依次作为参数传入fun,返回由函数返回值组成的新的列表。 python3:返回一个map对象 python2:返回列表 可以用list将对象转换为列表进行调用 代码: def f...
    99+
    2023-01-31
    高阶 函数 基础
  • python函数的返回值
    返回值:return1.没有返回值    #不写return    #只写return:结束一个函数    #return None2.有一个返回值    #可以返回任何数据类型    #只要返回就可以接收到    #如果在一个程序中有多个...
    99+
    2023-01-30
    函数 返回值 python
  • Python之函数进阶
    一.形参的动态参数: 动态参数,用于参数不确定时用. 格式: def fun (*args) fun(args) 1. 动态接收位置参数:动态参数必须在位置参数后.列子1.假如参数不确定时,如下的列子,每人饭量不一样,吃的种类不一样,此时...
    99+
    2023-01-30
    进阶 函数 Python
  • python使用max函数返回参数的最大值
    在python中使用max函数返回参数最大值的方法max:max()函数的作用是返回给定参数的最大值。max()函数语法:max( x, y, z, .... )max()函数使用方法:print ("max(80, 100, 1000) ...
    99+
    2024-04-02
  • Python基础——4高阶函数
    高阶函数 函数本身可用变量指向,把变量当做函数参数的函数成为高阶函数 map and reduce map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterato...
    99+
    2023-01-30
    高阶 函数 基础
  • python的函数形参和返回值是什么
    这篇文章主要介绍了python的函数形参和返回值是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python的函数形参和返回值是什么文章都会有所收获,下面我们一起来看看吧。函数的返回值一个函数执行后可以返回...
    99+
    2023-06-29
  • Python 详解基本语法_函数_返回值
    Python 详解基本语法 概要: 函数的返回值是函数重要的组成部分。函数的根本在于实现程序的部分功能,所以很多时候我们需要将函数执行后的结果返回给程序再由程序作出进一步的操作。可以说是函数的返回值令函数与...
    99+
    2022-06-04
    语法 详解 函数
  • python基础知识之函数初阶——命名
    python中的命名空间分三种: 内置的命名空间,在启动解释器的时候自动加载进内存的各种名字所在的空间,比如print,input等不需要定义就可以使用的名字 全局命名空间,就是从上到下所有我们定义的变量名和函数名所在的空间,是在程序从上...
    99+
    2023-01-31
    基础知识 函数 python
  • Python函数的返回值与嵌套函数是什么
    这篇文章主要介绍“Python函数的返回值与嵌套函数是什么”,在日常操作中,相信很多人在Python函数的返回值与嵌套函数是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python函数的返回值与嵌套函数...
    99+
    2023-06-02
  • python函数怎么返回多个返回值
    本篇内容主要讲解“python函数怎么返回多个返回值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python函数怎么返回多个返回值”吧!一般情况下,函数只有一个返回值,但Python也支持函数...
    99+
    2023-06-30
  • 关于adfuller函数返回值的参数说明与记录
    目录adfuller函数返回值的参数说明查看adfuller()函数的模型拟合系数adfuller()函数原型regresults参数adfuller()函数原代码adfuller(...
    99+
    2024-04-02
  • python函数进阶之闭包函数
    目录闭包函数什么是闭包函数判断是否是闭包函数\__closure__cell_contents闭包函数的特点闭包函数的意义闭包函数 什么是闭包函数 如果内函数使用了外函数的局部变量,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作