相关疑难解决方法(0)

如何通过引用传递变量?

Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'

class PassByReference:
    def __init__(self):
        self.variable = 'Original'
        self.change(self.variable)
        print(self.variable)

    def change(self, var):
        var = 'Changed'
Run Code Online (Sandbox Code Playgroud)

有什么我可以通过实际参考传递变量吗?

python reference parameter-passing pass-by-reference

2480
推荐指数
22
解决办法
124万
查看次数

为什么String在Java中是不可变的?

我在接受采访时被问到为什么String是不可变的

我这样回答:

当我们在java中创建一个字符串时,String s1="hello";就会在字符串池(hello)中创建一个对象,而s1将指向hello.如果我们再这样做,String s2="hello";那么将不会创建另一个对象但s2将指向,hello 因为JVM将首先检查如果字符串池中存在相同的对象. 如果不存在则只创建一个新对象,否则不创建.

现在,如果假设Java允许串可变那么如果我们改变S1hello world那么S2价值也将hello world因此Java字符串是不可改变的.

如果我的答案是还是错,请问任何人可以告诉我吗?

java string

169
推荐指数
7
解决办法
18万
查看次数

在python dict中赋值(copy vs reference)

我理解在python中的每一件事,无论是数字,字符串,字典还是任何东西都是一个对象.变量名只是指向内存中的对象.现在根据这个问题,

>> a_dict = b_dict = c_dict = {}

这将创建一个空字典,并且所有变量都指向此dict对象.因此,改变任何一个都会反映在其他变量中.

>> a_dict["key"] = "value" #say
>> print a_dict
>> print b_dict
>> print c_dict
Run Code Online (Sandbox Code Playgroud)

会给

{'key': value}
{'key': value}
{'key': value}
Run Code Online (Sandbox Code Playgroud)

我已经理解了指向对象的变量的概念,所以这看起来很公平.

现在即使它可能很奇怪,因为它是如此基本的陈述,为什么会发生这种情况?

>> a = b = c = 1
>> a += 1
>> print a, b, c
2, 1, 1   # and not 2, 2, 2
Run Code Online (Sandbox Code Playgroud)

问题的第一部分:为什么这里应用的概念不同?

实际上,当我试图为此寻找解决方案时,出现了这种疑问:

>> a_dict = {}
>> some_var = "old_value"
>> a_dict['key'] = some_var
>> some_var = "new_value" …
Run Code Online (Sandbox Code Playgroud)

python reference

10
推荐指数
2
解决办法
2万
查看次数