Python 传递参数

Python 传递参数在Python中,传递参数指的是函数或方法中的参数传输方式。Python中的参数传递有两种方式,分别为“传值调用”和“传引用调用”。

一、基本概念

在Python中,传递参数指的是函数或方法中的参数传输方式。Python中的参数传递有两种方式,分别为“传值调用”和“传引用调用”。

所谓“传值调用”,是指在传参时,将原始变量的值复制一份传入函数中参与运算操作。传值调用不会改变原始变量的值,在函数内部改变参数的值,不会对原始变量造成影响。而所谓“传引用调用”,则是在传参时,将原始变量的引用地址传给函数,在函数内部改变参数的值,会对原始变量造成影响。

在Python中,函数和方法的参数传递默认采用“传值调用”方式。

二、传值调用

在Python中,传值调用又分为对不可变对象(如:数字、字符串、元组)和可变对象(如:列表、字典)进行传参,不同类型的对象传参方式也有所不同。

1、对不可变对象进行传参

不可变对象的值一旦赋值就无法改变,因此将其传递给函数时,只是将其值复制一份传递给函数。在函数内部对参数进行修改不会对原始变量造成影响。


def change_number(num):
    num += 10
  
number = 10  # 定义一个变量
change_number(number)  # 调用函数
print(number)  # 输出结果为10

上述代码将数字类型的变量number传递给change_number()函数中,在函数内部对num进行加10操作,但是并不会对原始变量number造成影响。

2、对可变对象进行传参

而对于可变对象的传参,则与不可变对象不同,将其传递给函数时,传递的是原始对象的引用地址,即传递的是对象的指针,这意味着对其进行操作时会对原始变量造成影响。


def change_list(alist):
    alist.append(4)
  
list1 = [1, 2, 3]  # 定义一个列表
change_list(list1)  # 调用函数
print(list1)  # 输出结果为 [1, 2, 3, 4]

上述代码将列表类型的变量list1传递给change_list()函数中,函数在内部对list1进行了操作,结果会对原始变量造成影响,最终输出的结果为[1, 2, 3, 4]。

三、传引用调用

在Python中,使用特定的方式来实现传引用调用,通过使用import引入copy模块,在函数内部对参数进行修改时,不会对原始变量造成影响。


import copy

def change_dict(adict):
    adict["name"] = "Tom"

dict1 = {"name":"Jack", "age":21}  # 定义一个字典
dict2 = copy.copy(dict1)  # 使用copy模块拷贝一个字典
change_dict(dict2)  # 调用函数
print(dict1)  # 输出结果为 {"name":"Jack", "age":21}
print(dict2)  # 输出结果为 {"name":"Tom", "age":21}

上述代码引入了copy模块,并使用copy()函数对字典进行拷贝,将字典dict1拷贝给字典dict2。然后将字典dict2传递给change_dict()函数中,函数内对字典dict2进行了修改,但是原始字典dict1并没有受到影响,输出的结果也能够证明这点。

四、总结:

Python中,参数传递可以使用“传值调用”和“传引用调用”两种方式,对于不可变对象的传参,使用“传值调用”的方式,并且不会对原始变量造成影响;对于可变对象的传参,则使用“传引用调用”的方式,并且对原始变量造成影响。在Python中,如果需要在函数内部修改某个对象的值,可以在函数内部先使用copy()函数对其进行拷贝,这样就能够保证函数内部修改的对象不会对原始变量造成影响。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/21012.html

(0)
上一篇 2024-05-12
下一篇 2024-05-12

相关推荐

  • 问题定位 | XtraBackup 8.0 数据重建避坑事件始末[通俗易懂]

    问题定位 | XtraBackup 8.0 数据重建避坑事件始末[通俗易懂]作者:卢文双 资深数据库研发工程师 目前负责青云云数据库的研发工作,热衷于研究主流数据库架构、源码,对关系型数据库 MySQL/PostgreSQL 及分布式数据库有深入研究。 前言 在为 Xenon

    2023-04-17
    138
  • 使用Python同时遍历两个列表,生成标题

    使用Python同时遍历两个列表,生成标题Python作为一种高级编程语言,有着广泛的应用场景。Python中提供了很多高效的方法来处理列表,而同时遍历两个列表,则是这些方法中常用的一种。在本文中,我们将介绍如何使用Python同时遍历两个列表,并生成对应的标题。

    2024-08-21
    28
  • 以js截取最后一个字符串为中心的方法

    以js截取最后一个字符串为中心的方法在web开发中,我们常常需要对字符串进行处理。有时候我们需要获取一个字符串的最后几个字符,甚至想把字符串最后一部分截成两部分处理。这时候,em以js截取最后一个字符串为中心的方法/em就非常有用。

    2024-06-22
    48
  • 数据透视表数据源更改_excel数据透视表数据分析

    数据透视表数据源更改_excel数据透视表数据分析一、引言 A表数据同步至B表的场景很常见,比如一个公司有总部及分厂,它们使用相同的系统,只是账套不同。此时,一些基础数据如物料信息,只需要总部录入即可,然后间隔一定时间同步至分厂,避免了重复工作。 二

    2023-05-16
    157
  • Windows10上安装MySQL(详细)「终于解决」

    Windows10上安装MySQL(详细)「终于解决」一、下载MySQL 1、在浏览器里打开mysql的官网http://www.mysql.com 2、进入页面顶部的”Downloads” 3、下滑页面,打开页面底部的“Community(GPL) …

    2023-04-05
    157
  • dbgen工具使用方法

    dbgen工具使用方法 本文将介绍dbgen多线程的使用方法: dbgen是用来生成TPCH 所需要的数据来使用的 TPCH :针对于数据库查询性能的压测方法 #:首先使用dbgen来生成数据 这里数据量业界有一个…

    2023-03-27
    159
  • 20200617学习笔记[通俗易懂]

    20200617学习笔记[通俗易懂]基数 一个索引上不同的值的个数,我们称之为“基数”(cardinality)。也就是说,这个基数越大,索引的区分度越好 我们可以使用 show index 方法,看到一个索引的基数 MySQL 是怎…

    2023-03-12
    154
  • MySQL函数学习(四)-

    MySQL函数学习(四)-注:笔记旨在记录 四、MySQL 聚合函数 | | 函 数 名 称 | 作 用 | 完 成 | |: :|: |: |: :| | 1 | MAX | 求最大值 | 勾 | | 2 | MIN |

    2023-05-25
    157

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注