Python 中的参数和形参2024 年 8 月 29 日 | 阅读 6 分钟 无论是什么编程语言,参数(Arguments)和形参(Parameters)这两个词都会给程序员带来很多困惑。有时,这两个词会被互换使用,但实际上,它们有着两个不同但又相似的含义。本教程将解释这两个词之间的区别,并深入探讨这些概念及其示例。 参数和形参都是传递给函数的变量/常量。区别在于:
示例输出 Enter the value of the first number: 5 Enter the value of the second number: 2 Sum of two numbers: 7 从示例中可以学到的要点
机制请注意,在上面的示例中,num1 和 num2 是我们在调用函数时使用的函数调用中的值。当调用函数时,a 和 b 被 num1 和 num2 替换,对参数执行操作,然后返回结果。 函数是为了避免反复编写常用逻辑而编写的。为了编写通用逻辑,我们使用一些变量,这些变量称为**形参(parameters)**。它们属于函数定义。当我们在程序中需要使用该函数时,我们需要将程序中使用的变量(称为**参数(arguments)**)应用于函数逻辑。然后,我们使用参数调用函数。 参数的类型根据我们传递参数给形参的方式,参数有两种类型:
示例 输出 Details of student: Raghav age: 12 grade: 6 Details of student: Santhosh age: 12 grade: 6 从示例中可以学到的要点 第一次函数调用
参数**按位置**传递给形参,这意味着根据传递的顺序:
在这里,第一个参数“Santhosh”是根据其位置传递给 name 的,接下来的两个参数是通过赋值传递给其相应形参的。正如你所观察到的,这里的顺序并不重要。 重要提示
如果我们这样写:details("Santhosh", age = 6, 12) 按值调用和按引用调用这是关于参数和形参最重要的概念。根据传递给形参的参数类型,有两种调用函数的方法:按值调用(Call by value)和按引用调用(Call by reference)。 当参数的值被传递到函数中的形参时,值会被复制到形参中。这种方法称为“**按值调用(Call by value)**”。 在这种方法中,参数和形参是不同的,并且存储在不同的内存位置。
当传递参数的地址而不是值到形参时,这种调用函数的方法称为“**按引用调用(Call by Reference)**”。
Python 遵循哪种方法?Python 不使用按值调用或按引用调用。它遵循一种称为“**按赋值调用(Call by assignment)**”的方法。在 Python 中,每一个实体都是一个**对象**。对象分为可变对象和不可变对象。当我们在 Python 中给一个变量赋值时,其行为与 C 或 Java 等低级语言不同。 假设在语句中: a = 20 a 是变量,20 是赋给它的值。在这里,20 被保存在一个内存位置,而 a 是我们为指向该内存位置的引用所取的名称。现在,如果我们写: a = 21 该名称将不再指向内存位置 20,而是指向另一个内存位置 21。 在 C 等其他语言中,变量是存储值的内存位置。 示例在 C 语言中: 输出 000000000062FE1C 000000000062FE1C 在 Python 中 输出 140714950863232 140714950863264
现在 comes Python 中的可变对象和不可变对象概念。 Python 中的可变对象和不可变对象
示例 可变对象 输出 2253724439168 2253724439168 理解 列表是可变的,这意味着我们可以在创建后对其进行更改或修改。正如你所观察到的,当以名称 a 创建时,它保存在地址“2253724439168”中。使用 append(),我们通过追加另一个值来修改它。它仍然在同一个内存位置,这意味着同一个对象被修改了。 不可变对象 输出 140714950863232 140714950863968 理解 这是我们在教程前面讨论过的情况。整数对象是不可变的,这意味着我们无法在创建后修改它。你可能会想,我们在上面的代码中仍然添加了 23。请注意,创建的对象在添加后不是同一个对象。它们都位于不同的内存位置,这意味着它们是不同的对象。 那么,在调用函数时,参数是如何传递给形参的呢? 结合关于 Python 中赋值操作的所有知识:
示例 输出 Details of the student: name: Harry Styles age: 15 grade: 10 marks: [25, 29, 2F1, 30, 26] 10 [25, 29, 21, 30, 26] 理解 该函数接受 4 个参数。请注意参数 **grade** 和 **marks**。grade 是一个整数值,这意味着它是不可变的。因此,一旦创建,我们就无法修改它。它遵循“按值调用”。正如我们在教程前面讨论过的,在遵循按引用调用时,“**对形参(指针)的更改不会影响程序中的参数值**”。因此,在函数定义中连接字符串后,grade 在程序中的原始值不会被修改。 对于 marks 来说,它是一个列表,是可变的。因此,它遵循“按引用调用”,这意味着“**对形参(指针)的更改将影响程序中的参数值**”。因此,在函数定义中追加列表后,更改会反映在原始程序中。 下一个主题Python 中的属性含义 |
我们已经讨论过边缘计算及其在 ious 教程中的各种功能。让我们扩展一下在边缘计算项目列表想法第一部分中讨论的想法。用于车辆边缘计算的深度强化学习型卸载调度项目描述:一种新的计算范式,称为车辆云…
阅读 12 分钟
简介:本教程讨论 PyBluez - Bluetooth Python 扩展模块。本文旨在向您介绍蓝牙编程,并帮助您开始使用 Python 蓝牙模块 PyBluez。蓝牙套接字编程与网络设计者用于 TCP/IP 连接的套接字编程相同,并且……
阅读 6 分钟
Python 语言中的变量用作各种数据值和数据结构的存储单元。当变量分配给任何 Python 对象时,它指向该对象,因为它们是内存中该特定对象的引用或指针...
7 分钟阅读
何时以及如何使用 StandardScaler?当给定数据集的特征在其范围内波动很大或以不同测量单位记录时,StandardScaler 就会发挥作用。通过 StandardScaler,数据在均值降至 0 后被缩放到方差为 1....
阅读 4 分钟
Pandas 是一个功能强大的 Python 库,为处理表格数据提供了易于使用的数据操作工具。它构建在 NumPy 包之上,并为数据分析提供了高级接口。数据分析中最常见的任务之一是读取...
7 分钟阅读
堆和优先队列简介 优先队列和堆是相当不受欢迎但令人惊讶地有益的数据结构。这些数据结构为查找数据集中最佳元素等问题提供了非常易于使用且高效的解决方案。...
阅读 6 分钟
如何在 Python 中设计一个 Hashset?我们知道 HashSet 是 Java 中一个著名的类。HashSet 用于使用哈希表存储值。在本教程中,我们将介绍 Python 中的 HashSet。我们还将学习如何设计...
阅读 8 分钟
?在本教程中,我们将学习如何使用 Graphviz 在 Python 中绘制(想象)一个大脑网络。Graphviz 是一个开源图表表示编程的 Python 模块。它在科学家中广为人知,用于进行表示。它将主要数据作为概念图的图表来处理...
11 分钟阅读
简介:在本文中,我们将讨论如何使用 Dash 在 Python 中开发数据可视化界面。过去,开发分析性 Web 应用程序是专业开发人员的一项任务,需要掌握多种编程语言和框架。现在情况并非如此。最近,您可以...
阅读 16 分钟
简介 曲线拟合是一种优化,它为已定义的函数找到一组最佳参数,以适用于给定的一组观测值。与监督学习不同,曲线拟合需要我们定义将输入示例映射到输出的函数。用于...
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India