相关疑难解决方法(0)

在函数中使用全局变量

如何在函数中创建或使用全局变量?

如果我在一个函数中创建一个全局变量,我如何在另一个函数中使用该全局变量?我是否需要将全局变量存储在需要访问的函数的局部变量中?

python scope global-variables

2939
推荐指数
22
解决办法
307万
查看次数

全球变量是否不好?

在C/C++中,全局变量和我的教授认为的一样糟糕吗?

c c++ global-variables

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

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万
查看次数

为什么全局变量是邪恶的?

我试图找到一个很好的来源,解释为什么global在python(以及一般的编程)中使用被认为是不好的做法.有人可以指点我或解释一下吗?

python side-effects global-variables

100
推荐指数
3
解决办法
5万
查看次数

检查列表中的所有值是否都大于某个数字

my_list1 = [30,34,56]
my_list2 = [29,500,43]
Run Code Online (Sandbox Code Playgroud)

如何检查列表中的所有值是否> = 30?my_list1应该工作,my_list2不应该.

我唯一能想到的是:

boolean = 0
def func(ls):
    for k in ls:
        if k >= 30:
            boolean = boolean + 1
        else:
            boolean = 0
    if boolean > 0:
        print 'Continue'
    elif boolean = 0:
        pass
Run Code Online (Sandbox Code Playgroud)

2016年更新:

事后看来,在处理速度真正重要且利用的更大数据集后numpy......我会这样做:

>>> my_list1 = [30,34,56]
>>> my_list2 = [29,500,43]

>>> import numpy as np
>>> A_1 = np.array(my_list1)
>>> A_2 = np.array(my_list2)

>>> A_1 >= 30
array([ True,  True,  True], …
Run Code Online (Sandbox Code Playgroud)

python function list max

59
推荐指数
4
解决办法
14万
查看次数

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

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

#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万
查看次数

全局词典不需要关键字全局来修改它们吗?

可能重复:
为什么在这种情况下不需要全局关键字?

我想知道为什么我可以在没有global关键字的情 为什么它对其他类型是强制性的?这背后有什么逻辑吗?

例如代码:

#!/usr/bin/env python3

stringvar = "mod"
dictvar = {'key1': 1,
           'key2': 2}

def foo():
    dictvar['key1'] += 1

def bar():
    stringvar = "bar"
    print(stringvar)

print(dictvar)
foo()
print(dictvar)

print(stringvar)
bar()
print(stringvar)
Run Code Online (Sandbox Code Playgroud)

给出以下结果:

me@pc:~/$ ./globalDict.py 
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 2}  # Dictionary value has been changed
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)

我期待的地方:

me@pc:~/$ ./globalDict.py 
{'key2': 2, 'key1': 1}
{'key2': 2, 'key1': 1}  # I didn't use global, so dictionary remains the same
mod
bar
mod
Run Code Online (Sandbox Code Playgroud)

python dictionary scope global global-variables

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

你如何在Python中声明一个全局常量?

我的程序开始时我想做一些繁重的计算,然后我想将结果(一个大的凹凸矩阵)保存在内存中,以便我可以一次又一次地使用它.我的程序包含多个文件和类,我希望能够从任何地方访问此变量,并且如果可能,将其定义为常量.

如何在Python中定义全局常量?

python python-2.7

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

为什么在这种情况下不需要全局关键字?

cache = {}
def func():
    cache['foo'] = 'bar'
print cache['foo'] 
Run Code Online (Sandbox Code Playgroud)

产量

bar
Run Code Online (Sandbox Code Playgroud)

为什么这样做以及为什么不需要使用global关键字?

python global-variables

16
推荐指数
1
解决办法
2310
查看次数

在python中更改函数内的全局变量

我是python的新手。

我不太明白我需要如何设置变量并在稍后使用的函数中更改它们。我的脚本需要从函数中获取 x 和 y 值,这些值由函数创建的图表的大小决定。这些变量需要稍后在脚本中传递给打印命令以输出 html。所以假设我有全局变量:

    originx_pct = 0.125
    originy_pct = 0.11
Run Code Online (Sandbox Code Playgroud)

但是当函数运行时,这些将需要改变......

    def makeplot(temp, entropy,preq):
        originx_pct = origin.get_points()[0][0]
        originy_pct = origin.get_points()[0][1]
Run Code Online (Sandbox Code Playgroud)

然后在后面写的html页面的javascript中打印出来...

    print('var originx_pct = {};'.format(originx_pct))
    print('var originy_pct = {};'.format(originy_pct))
Run Code Online (Sandbox Code Playgroud)

这两个变量不会改变,我只是不明白我需要做什么来更新它们并能够打印它们(在函数之外)。我假设函数不知道变量,所以它不能改变它们。如果我将 2 个变量作为参数提供给函数,我如何为脚本的打印部分取回值?

python variables scope

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