GVKun编程网logo

python:复制变量的更改会影响原始变量(python 变量复制)

8

在这篇文章中,我们将带领您了解python:复制变量的更改会影响原始变量的全貌,包括python变量复制的相关情况。同时,我们还将为您介绍有关console.log()在变量实际更改之前显示变量的更改

在这篇文章中,我们将带领您了解python:复制变量的更改会影响原始变量的全貌,包括python 变量复制的相关情况。同时,我们还将为您介绍有关console.log()在变量实际更改之前显示变量的更改值、PHP 函数中引用变量的修改对原始变量有什么影响?、PHP 函数中引用变量的内存地址与原始变量是否相同?、python netcdf:复制所有变量和属性,但复制一个的知识,以帮助您更好地理解这个主题。

本文目录一览:

python:复制变量的更改会影响原始变量(python 变量复制)

python:复制变量的更改会影响原始变量(python 变量复制)

我有一个清单,我创建了一个清单以进行一些操作,同时仍保留原始清单。但是,当我设置copy_list等于时org_list,它们将变为同一事物,并且如果我更改copy_list,它们org_list也会更改。例如:

org_list = [''y'', ''c'', ''gdp'', ''cap'']copy_list = org_listcopy_list.append(''hum'')print(copy_list)print(org_list)

退货

[''y'', ''c'', ''gdp'', ''cap'', ''hum''][''y'', ''c'', ''gdp'', ''cap'', ''hum'']

我对实际发生的事情不太了解,但看起来org_list实际上是将自身传递给copy_list他们,因此它们实际上是同一回事。

有没有一种方法可以制作org_list的独立副本,而又不需要做一些笨拙的事情:

copy_list = []for i in org_list:    copy_list.append(i)

我之所以这样说,是因为我对其他类型的变量(例如熊猫数据框)也存在相同的问题。

答案1

小编典典

那是因为在python中设置变量实际上设置了对该变量的引用。几乎每个学习python的人都会在某个时候遇到这个问题。解决方案只是复制列表:

copy_list = org_list[:] 

console.log()在变量实际更改之前显示变量的更改值

console.log()在变量实际更改之前显示变量的更改值

如何解决console.log()在变量实际更改之前显示变量的更改值?

Pointy的答案有很好的信息,但这不是此问题的正确答案。

OP所描述的行为是一个错误的一部分,该错误于2010年3月首次报告,并于2012年8月为Webkit进行了修补,但截至本文撰写之时尚未集成到GoogleChrome中。行为取决于将对象文字传递到时控制台调试窗口是 还是 console.log()

):

Description from mitch kramer 2010-03-05 11:37:45 PST

1)创建具有一个或多个属性的对象文字

2)console.log该对象,但保持关闭状态(不要在控制台中扩展它)

3)将其中一个属性更改为新值

现在打开该console.log,您会发现由于某些原因它具有新值,即使它的值在生成时有所不同。

我应该指出,如果您打开它,它将保持正确的值(如果不清楚)。

Chromium开发人员的回复:

评论#2来自帕维尔·费尔德曼(Pavel Feldman)2010-03-09 06:33:36 PST

我认为我们永远都不会解决这个问题。我们无法在将对象转储到控制台中后对其进行克隆,也无法监听对象属性的更改以使其始终真实。

但是,我们应该确保预期存在的行为。

随之而来的是许多抱怨,最终导致错误修复。

从今天开始,将对象(数组)转储到控制台中将导致在扩展控制台对象时(即,延迟地)读取对象的属性。这意味着在突变时转储相同的对象将很难使用控制台进行调试。

此更改会在记录对象/数组时开始为其生成简短的预览,并将此信息传递到前端。这仅在前端已打开时发生,它仅适用于console.log(),不适用于实时控制台交互。

Console.log()传递了对该对象的引用,因此控制台中的值随对象的变化而变化。为避免这种情况,你可以:

console.log(JSON.parse(JSON.stringify(c)))

MDN警告:

请注意,如果你在最新版本的Chrome和Firefox中记录对象,则在控制台上登录的内容是对该对象的引用,这不一定是调用时对象的“值” console.log(),而是它是打开控制台时对象的值。

解决方法

我了解的这段代码。我们复制A并将其称为C。当A更改时,C保持不变

var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1

但是当A是一个数组时,我们会有不同的情景。C不仅会改变,而且甚至在我们碰到A之前都会改变

var A = [2,1];
var C = A;
console.log(C); // [1,2]
A.sort();
console.log(C); // [1,2]

有人可以解释第二个示例中发生的情况吗?

PHP 函数中引用变量的修改对原始变量有什么影响?

PHP 函数中引用变量的修改对原始变量有什么影响?

变量作为引用传递给函数后,对变量的修改会影响原始变量,因为引用变量指向同一内存位置。在 php 中,使用 & 符后跟变量名称传递引用变量,例如:function modifyvariable(&$var) { // 对 $var 所做的修改也会影响外部 $var}

PHP 函数中引用变量的修改对原始变量有什么影响?

PHP 函数中引用变量的修改对原始变量的影响

当您将变量作为引用传递给函数时,函数中的对变量所做的任何修改也会影响传递的原始变量。这是因为函数内的引用变量与外部变量指向同一内存位置。

传递引用变量的语法

立即学习“PHP免费学习笔记(深入)”;

要在 PHP 中传递引用变量,请使用 & 符后跟变量名称:

function modifyVariable(&$var) {
  // 对 $var 所做的修改也会影响外部 $var
}
登录后复制

实战案例

以下示例展示了引用变量的用法:

$var = 10;

// 将 $var 作为引用传递给函数
modifyVariable($var);

echo $var; // 输出 20
登录后复制

modifyVariable() 函数中的 $var 是一个引用变量。因此,传递给该函数的原始变量 $var 也将被更新为 20。

结论

通过引用传递变量允许在函数内部修改外部变量。这对于需要修改外部变量而不返回新值的情况非常有用。不过,请务必谨慎使用引用变量,因为意外修改外部变量可能会导致不可预期的行为。

以上就是PHP 函数中引用变量的修改对原始变量有什么影响?的详细内容,更多请关注php中文网其它相关文章!

PHP 函数中引用变量的内存地址与原始变量是否相同?

PHP 函数中引用变量的内存地址与原始变量是否相同?

否,php 函数中引用变量的内存地址与原始变量不同。引用变量指向原始变量的内存地址,但它是一个不同的变量,拥有自己的内存地址。

PHP 函数中引用变量的内存地址与原始变量是否相同?

PHP 函数中引用变量的内存地址是否与原始变量相同?

在 PHP 中,可以通过引用变量来传递变量的内存地址给函数。这样做的好处是函数可以修改原始变量的值。然而,引用变量的内存地址是否与原始变量相同呢?

答案:否

立即学习“PHP免费学习笔记(深入)”;

引用变量虽然指向原始变量的内存地址,但它本身是一个不同的变量,具有自己的内存地址。

实战案例

<?php
function changeValue($x) {
  $x = 100;
}

$a = 50;
changeValue($a);

echo $a; // 输出 50
登录后复制

在上面的示例中,我们定义了一个函数 changeValue,它接受一个引用变量 $x。在函数中,我们修改了 $x 的值,但原始变量 $a 的值保持不变。这是因为 $x 虽然指向 $a 的内存地址,但它是一个不同的变量,它对原始变量的修改不会影响原始变量的值。

结论

在 PHP 函数中,引用变量的内存地址与原始变量不同。引用变量虽然指向原始变量的内存地址,但它是一个不同的变量,它对原始变量的修改不会影响原始变量的值。

以上就是PHP 函数中引用变量的内存地址与原始变量是否相同?的详细内容,更多请关注php中文网其它相关文章!

python netcdf:复制所有变量和属性,但复制一个

python netcdf:复制所有变量和属性,但复制一个

我需要在netcdf文件中处理一个实际上包含许多属性和变量的变量。我认为无法更新netcdf文件

我的方法如下:

  1. 从原始文件获取要处理的变量
  2. 处理变量
  3. 将所有数据从原始netcdf复制,但将已处理的变量复制到最终文件
  4. 将已处理的变量复制到最终文件

我的问题是对步骤3进行编码。我从以下内容开始:

def  processing(infile,variable,outfile):
        data = fileH.variables[variable][:]

        # do processing on data...

        # and now save the result
        fileH = NetCDFFile(infile,mode="r")
        outfile = NetCDFFile(outfile,mode='w')
        # build a list of variables without the processed variable
        listOfVariables = list( itertools.ifilter( lamdba x:x!=variable,fileH.variables.keys() ) )
        for ivar in listOfVariables:
             # here I need to write each variable and each attribute

如何在不重建整个数据结构的情况下将所有数据和属性保存在完整的代码中?

关于python:复制变量的更改会影响原始变量python 变量复制的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于console.log()在变量实际更改之前显示变量的更改值、PHP 函数中引用变量的修改对原始变量有什么影响?、PHP 函数中引用变量的内存地址与原始变量是否相同?、python netcdf:复制所有变量和属性,但复制一个的相关信息,请在本站寻找。

本文标签: