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

在Python中使用"global"关键字

我从阅读文档中了解到,Python有一个单独的函数命名空间,如果我想在该函数中使用全局变量,我需要使用global.

我正在使用Python 2.7,我尝试了这个小测试

>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
...     return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
Run Code Online (Sandbox Code Playgroud)

即使没有,事情似乎也很好global.我能够毫无问题地访问全局变量.

我错过了什么吗?另外,以下是来自Python文档:

全局语句中列出的名称不能定义为形式参数,也不能定义为for循环控制目标,类定义,函数定义或import语句.

虽然形式参数和类定义对我有意义,但我无法理解for循环控制目标和函数定义的限制.

python global-variables

279
推荐指数
6
解决办法
38万
查看次数

Python函数全局变量?

由于这样的混乱,我知道我应该首先避免使用全局变量,但如果我要使用它们,以下是使用它们的有效方法吗?(我试图调用在单独函数中创建的变量的全局副本.)

x = "somevalue"

def func_A ():
   global x
   # Do things to x
   return x

def func_B():
   x=func_A()
   # Do things
   return x

func_A()
func_B()
Run Code Online (Sandbox Code Playgroud)

请问__CODE__第二函数使用具有全球复制相同的值__CODE____CODE__使用和修改?在定义后调用函数时,命令有关系吗?

python global-variables

255
推荐指数
5
解决办法
54万
查看次数

如何在Python中创建模块范围的变量?

有没有办法在模块内部设置全局变量?当我尝试以最明显的方式执行此操作时,如下所示,Python解释器说该变量__DBNAME__不存在.

...
__DBNAME__ = None

def initDB(name):
    if not __DBNAME__:
        __DBNAME__ = name
    else:
        raise RuntimeError("Database name has already been set.")
...
Run Code Online (Sandbox Code Playgroud)

并在将模块导入另一个文件后

...
import mymodule
mymodule.initDB('mydb.sqlite')
...
Run Code Online (Sandbox Code Playgroud)

追溯是: __DBNAME__

有任何想法吗?我正在尝试使用模块来设置单例,根据这个人的建议.

python variables singleton scope module

198
推荐指数
4
解决办法
21万
查看次数

Python变量范围错误

以下代码在Python 2.5和3.0中按预期工作:

a, b, c = (1, 2, 3)

print(a, b, c)

def test():
    print(a)
    print(b)
    print(c)    # (A)
    #c+=1       # (B)
test()
Run Code Online (Sandbox Code Playgroud)

但是,当我取消注释行(B)时,我得到了UnboundLocalError: 'c' not assigned一行(A).的值ab被正确地打印.这让我感到困惑,原因有两个:

  1. 为什么在行(A)处抛出运行时错误,因为后面的行(B)语句?

  2. 为什么变量ab打印符合预期,同时c引发错误?

我能想到的唯一解释是,赋值创建了一个局部变量,即使在创建局部变量之前,它也优先于"全局"变量.当然,变量在存在之前"窃取"范围是没有意义的.cc+=1c

有人可以解释一下这种行为吗?

python variables scope

195
推荐指数
7
解决办法
6万
查看次数

Python 3:UnboundLocalError:赋值前引用的局部变量

以下代码给出了错误UnboundLocalError: local variable 'Var1' referenced before assignment:

Var1 = 1
Var2 = 0
def function(): 
    if Var2 == 0 and Var1 > 0:
        print("Result One")
    elif Var2 == 1 and Var1 > 0:
        print("Result Two")
    elif Var1 < 1:
        print("Result Three")
    Var1 =- 1
function()
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?谢谢你的帮助!

python function python-3.x

174
推荐指数
5
解决办法
49万
查看次数

不明白为什么会发生UnboundLocalError

我在这做错了什么?

counter = 0

def increment():
  counter += 1

increment()
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出了一个UnboundLocalError.

python scope global-variables

153
推荐指数
5
解决办法
18万
查看次数

如何"很好地"在Python中打印列表

在PHP中,我可以这样做:

echo '<pre>'
print_r($array);
echo '</pre>'
Run Code Online (Sandbox Code Playgroud)

在Python中,我目前只是这样做:

print the_list
Run Code Online (Sandbox Code Playgroud)

但是,这将导致大量数据.有没有办法将它很好地打印到可读的树中?(有缩进)?

python

72
推荐指数
5
解决办法
12万
查看次数

为什么分配给我的全局变量不适用于Python?

我在尝试理解python范围规则时遇到了麻烦.

使用以下脚本:

a = 7

def printA():
    print "Value of a is %d" % (a)

def setA(value):
    a = value
    print "Inside setA, a is now %d" %(a)


print "Before setA"
printA()
setA(42)
print "After setA"
printA()
Run Code Online (Sandbox Code Playgroud)

给出了意想不到的(对我来说)输出:

    Before setA
    Value of a is 7
    Inside setA, a is now 42
    After setA
    Value of a is 7

我希望最后一次打印a的值为42,而不是7.我对Python的全局变量范围规则缺少什么?

python scope global-variables

64
推荐指数
3
解决办法
6万
查看次数

从模块中的函数内访问模块级变量

我希望能够做到这样的事情:

#mymodule
var = None

def load():
    var = something()
Run Code Online (Sandbox Code Playgroud)

其他模块:

#secondmodule
import mymodule
mymodule.load()

#thirdmodule
from mymodule import var
print var #Shouldn't be None
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从模块中定义的函数引用模块变量.

这可能吗?或者我需要在每个我不想使用它的地方发布全球声明.还是我完全错了?

python

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