标签: scope

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

如何将此上下文传递给函数?

我认为这将是我可以轻松谷歌的东西,但也许我不是在问正确的问题......

如何在给定的javascript函数中设置"this"指的是什么?

例如,像大多数jQuery的功能一样,例如:

$(selector).each(function() {
   //$(this) gives me access to whatever selector we're on
});
Run Code Online (Sandbox Code Playgroud)

如何在调用时编写/调用我自己的独立函数,这些函数具有适当的"this"引用?我使用jQuery,所以如果有一个特定于jQuery的方法,那就是理想的.

javascript jquery scope this

197
推荐指数
5
解决办法
14万
查看次数

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

我和Perl之间的区别是什么?

我知道myPerl中有什么.它定义了一个仅存在于定义它的块范围内的变量.怎么our办?有our什么不同my

perl scope

184
推荐指数
7
解决办法
11万
查看次数

var self = this?

使用实例方法作为事件处理程序的回调改变的范围this"我的实例""无论只是调用的回调".所以我的代码看起来像这样

function MyObject() {
  this.doSomething = function() {
    ...
  }

  var self = this
  $('#foobar').bind('click', function(){
    self.doSomethng()
    // this.doSomething() would not work here
  })
}
Run Code Online (Sandbox Code Playgroud)

它有效,但这是最好的方法吗?这对我来说很奇怪.

javascript jquery closures scope

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

在每个循环中访问Handlebars.js范围之外的变量

我有一个handlebars.js模板,就像这样:

{{externalValue}}

<select name="test">
    {{#each myCollection}}
       <option value="{{id}}">{{title}} {{externalValue}}</option>
    {{/each}}
</select>
Run Code Online (Sandbox Code Playgroud)

这是生成的输出:

myExternalValue

<select name="test">
       <option value="1">First element </option>
       <option value="2">Second element </option>
       <option value="3">Third element </option>
</select>
Run Code Online (Sandbox Code Playgroud)

正如所料,我可以访问每个元素的idtitle字段myCollection来生成我的选择.在select之外,我的externalValue变量被正确打印("myExternalValue").

不幸的是,在期权的文本中,externalValue价值从未打印出来.

我的问题是:我怎样才能在循环内访问handlebars.js范围之外的变量?

一如既往,先谢谢.

javascript each templates scope handlebars.js

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

在while循环内修改的变量不会被记住

在下面的程序中,如果我$foo在第一个if语句中将变量设置为值1 ,那么它的作用就是在if语句之后记住它的值.但是,当我将同一个变量设置ifwhile语句内部的值2时,它在while循环之后就被遗忘了.它的行为就像我$foowhile循环中使用某种变量的副本而我只修改那个特定的副本.这是一个完整的测试程序:

#!/bin/bash

set -e
set -u 
foo=0
bar="hello"  
if [[ "$bar" == "hello" ]]
then
    foo=1
    echo "Setting \$foo to 1: $foo"
fi

echo "Variable \$foo after if statement: $foo"   
lines="first line\nsecond line\nthird line" 
echo -e $lines | while read line
do
    if [[ "$line" == "second line" ]]
    then
    foo=2
    echo "Variable \$foo updated to $foo inside if inside while loop"
    fi
    echo "Value …
Run Code Online (Sandbox Code Playgroud)

bash scope sh while-loop

168
推荐指数
3
解决办法
15万
查看次数

参考:什么是变量范围,哪些变量可以从哪里访问,什么是"未定义变量"错误?

注意:这是在PHP中处理变量范围的参考问题.请关闭符合此模式的许多问题中的任何一个.

什么是PHP中的"变量范围"?一个.php文件中的变量是否可以在另一个中访问?为什么我有时会得到"未定义的变量"错误?

php scope

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

在Python中确定'for'循环

我不是在问Python的范围规则; 我一般都了解 Python for循环中的作用域是如何工作的.我的问题是为什么设计决策是以这种方式做出的.例如(没有双关语):

for foo in xrange(10):
    bar = 2
print(foo, bar)
Run Code Online (Sandbox Code Playgroud)

以上将打印(9,2).

这让我感到很奇怪:'foo'实际上只是控制循环,而'bar'是在循环中定义的.我可以理解为什么'bar'可能需要在循环外部访问(否则,for循环将具有非常有限的功能).我不明白为什么在循环退出后控制变量必须保持在范围内.根据我的经验,它只会使全局命名空间变得混乱,并且更难以追踪其他语言中的解释器会捕获的错误.

python scope

161
推荐指数
4
解决办法
8万
查看次数

Java中方法的默认范围是什么?

如果我输入:

 void doThis(){
     System.out.println("Hello Stackoverflow.");
 }
Run Code Online (Sandbox Code Playgroud)

什么是默认范围doThis()

上市?受保护的?私人的?

java scope

160
推荐指数
4
解决办法
13万
查看次数