相关疑难解决方法(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万
查看次数

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

是否可以仅在没有在Python中赋值的情况下声明变量?

是否可以在Python中声明变量,如此?:

var
Run Code Online (Sandbox Code Playgroud)

所以它初始化为None?似乎Python允许这样做,但是一旦你访问它,它就会崩溃.这可能吗?如果没有,为什么?

编辑:我想这样做的情况:

value

for index in sequence:

   if value == None and conditionMet:
       value = index
       break
Run Code Online (Sandbox Code Playgroud)

重复

有关

python variable-assignment variable-declaration

260
推荐指数
4
解决办法
45万
查看次数

如何制作跨模块变量?

__debug__变量很方便,部分原因是它影响每个模块.如果我想创建另一个以相同方式工作的变量,我该怎么做?

变量(让我们是原始的并称之为'foo')并不一定是真正的全局变量,因为如果我在一个模块中更改foo,它会在其他模块中更新.如果我可以在导入其他模块之前设置foo然后他们会看到相同的值,我会没事的.

python module global

117
推荐指数
7
解决办法
14万
查看次数

python变量是指针?

据我所知,Python中的变量只是指针.

基于此规则,我可以假设此代码段的结果:

i = 5
j = i
j = 3 
print(i)
Run Code Online (Sandbox Code Playgroud)

会的3.但是我得到了一个意想不到的结果,是的5.

此外,我的Python书确实涵盖了这个例子:

i = [1,2,3]
j = i
i[0] = 5
print(j)
Run Code Online (Sandbox Code Playgroud)

结果将是[5,2,3].

我理解错了什么?

python variables pointers identifier

66
推荐指数
5
解决办法
6万
查看次数

Python列表和for-access访问(在内置列表中查找/替换)

我原本以为Python是一种纯粹的传递引用语言.

来自C/C++我不禁想到内存管理,而且很难把它从我的头脑中解脱出来.因此,我试图从Java的角度来考虑它,并将所有内容都考虑在内,而不是原始内容作为参考传递.

问题:我有一个列表,其中包含一组用户定义类的实例.

如果我使用for-each语法,即:

for member in my_list:
    print(member.str);
Run Code Online (Sandbox Code Playgroud)

是否member相当于对象的实际引用?

它是否相当于:

i = 0
while i < len(my_list):
    print(my_list[i])
    i += 1
Run Code Online (Sandbox Code Playgroud)

我认为不是,因为当我想要替换时,它不起作用,也就是说,这不起作用:

for member in my_list:
    if member == some_other_obj:
        member = some_other_obj
Run Code Online (Sandbox Code Playgroud)

在列表中进行简单的查找和替换.可以在for-each循环中完成,如果是,怎么做?另外,我是否只需要使用随机访问语法(方括号),或者什么都不会工作,我需要删除该条目,并插入一个新条目?即:

i = 0
for member in my_list:
   if member == some_other_obj:
      my_list.remove(i)
      my_list.insert(i, member)
   i += 1
Run Code Online (Sandbox Code Playgroud)

python foreach replace reference list

26
推荐指数
3
解决办法
11万
查看次数

Python变量范围(通过引用或复制传递?)

为什么变量L在sorting(L)函数调用中被操纵?在其他语言中,L的副本将sorting()作为副本传递给任何更改,以便任何更改x都不会更改原始变量?

def sorting(x):
    A = x #Passed by reference?
    A.sort() 

def testScope(): 
    L = [5,4,3,2,1]
    sorting(L) #Passed by reference?
    return L

>>> print testScope()

>>> [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

python scope

11
推荐指数
2
解决办法
8167
查看次数

在python中重新分配变量

我有以下的代码和变量,我想找到什么样的变量a,a1,a2,b,b1,和b2参考代码已经执行之后.

def do_something(a, b):
    a.insert(0, "z")
    b = ["z"] + b

a = ["a", "b", "c"]
a1 = a
a2 = a[:]
b = ["a", "b", "c"]
b1 = b
b2 = b[:]

do_something(a, b)
Run Code Online (Sandbox Code Playgroud)

我尝试的解决方案如下:

a = ["z", "a", "b", "c"]
a1 = ["a", "b", "c"]
a2 = ["a", "b", "c"]
b = ["z" "a", "b", "c"]
b1 = ["a", "b", "c"]
b2 = ["a", "b", "c"] …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
3748
查看次数

如何在Python中调用工作?

对于我正在研究的项目,我正在实现一个链表数据结构,它基于一对的概念,我定义为:

class Pair:
    def __init__(self, name, prefs, score):
        self.name = name
        self.score = score
        self.preferences = prefs
        self.next_pair = 0
        self.prev_pair = 0
Run Code Online (Sandbox Code Playgroud)

where self.next_pairself.prev_pair是分别指向上一个和下一个链接的指针.

要设置链表,我有一个看起来像这样的安装功能.

def install(i, pair):
    flag = 0
    try:
        old_pair = pair_array[i]
        while old_pair.next_pair != 0:
            if old_pair == pair:
                #if pair in remainders: remainders.remove(pair)
                return 0
            if old_pair.score < pair.score:
                flag = 1
                if old_pair.prev_pair == 0: # we are at the beginning
                    old_pair.prev_pair = pair
                    pair.next_pair = old_pair
                    pair_array[i] = pair …
Run Code Online (Sandbox Code Playgroud)

python programming-languages

5
推荐指数
2
解决办法
619
查看次数

函数在Python中更改列表值而不是变量值

我们来看一个简单的代码:

y = [1,2,3]

def plusOne(y):
    for x in range(len(y)):
        y[x] += 1
    return y

print plusOne(y), y


a = 2

def plusOne2(a):
    a += 1
    return a

print plusOne2(a), a
Run Code Online (Sandbox Code Playgroud)

'y'的值发生变化但值'a'保持不变.我已经知道这是因为一个是可变的而另一个不是.但是如何更改代码以使函数不更改列表?

例如,要做类似的事情(为了简单起见,使用伪代码):

a = [1,2,3,...,n]

function doSomething(x):
    do stuff with x
    return x

b = doSomething(a)

if someOperation(a) > someOperation(b):
    do stuff
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉,我在嵌套列表上另一个问题.看到这段代码:

def change(y):
    yN = y[:]
    for i in range(len(yN)):
        if yN[i][0] == 1:
            yN[i][0] = 0
        else:
            yN[i][0] = 1
    return yN …
Run Code Online (Sandbox Code Playgroud)

python variables function list nested-lists

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