标签: globals

在文件之间使用全局变量?

我对全局变量如何工作感到困惑.我有一个大型项目,大约有50个文件,我需要为所有这些文件定义全局变量.

我所做的是在我的项目main.py文件中定义它们,如下所示:

# ../myproject/main.py

# Define global myList
global myList
myList = []

# Imports
import subfile

# Do something
subfile.stuff()
print(myList[0])
Run Code Online (Sandbox Code Playgroud)

我想用myListsubfile.py,如下

# ../myproject/subfile.py

# Save "hey" into myList
def stuff():
    globals()["myList"].append("hey")
Run Code Online (Sandbox Code Playgroud)

我试过的另一种方式,但也没有用

# ../myproject/main.py

# Import globfile    
import globfile

# Save myList into globfile
globfile.myList = []

# Import subfile
import subfile

# Do something
subfile.stuff()
print(globfile.myList[0])
Run Code Online (Sandbox Code Playgroud)

在里面subfile.py我有这个:

# ../myproject/subfile.py

# Import globfile
import globfile

# Save "hey" into myList …
Run Code Online (Sandbox Code Playgroud)

python share globals

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

C中存储的常量变量在哪里?

我想知道常量变量存储在哪里.它与全局变量在同一个内存区域吗?还是在堆栈上?

c variables memory-management constants globals

51
推荐指数
4
解决办法
7万
查看次数

Objective C定义UIColor常量

我有一个iPhone应用程序,我的主题有一些自定义颜色.由于这些颜色将为我的UI修复,我想定义要包含的类中的颜色(Constants.h和Constants.m).我怎么做?(简单地定义它们不起作用,因为UIColors是可变的,并且会导致错误 - Initalizer不是恒定的).

/* Constants.h */
extern UIColor *test;

/* Constants.m */
UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

谢谢!

c iphone constants objective-c globals

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

在clojure中的全局变量的最佳实践,(refs vs alter-var-root)?

我发现自己最近在clojure代码中使用了以下习语.

(def *some-global-var* (ref {}))

(defn get-global-var []
  @*global-var*)

(defn update-global-var [val]
  (dosync (ref-set *global-var* val)))
Run Code Online (Sandbox Code Playgroud)

大多数情况下,这甚至不是多线程代码,可能需要refs给你的事务语义.它只是感觉refs不仅仅是线程代码,而且基本上适用于任何需要不变性的全局.这有更好的做法吗?我可以尝试重构代码以仅使用绑定或让但是对于某些应用程序来说这会变得特别棘手.

clojure globals refs

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

关于Objective-C项目中使用的extern的3个问题

  1. 当我extern在方法或变量声明之前使用单词时,我是否将其设置为全局,因此在整个项目中可读/可写/可用?

  2. 如果我在关键字之前使用extern,那么我的项目的一部分仍然无法访问它吗?例如,仅由子类...例如当我使用"protected"时.

  3. extern是一个C关键字,对吗?Objective-C中是否有等价物?我实际上不明白为什么他们在Objective-C项目中使用C关键字.

谢谢

c objective-c extern globals

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

修改globals()的输出是否安全?

locals()函数文档特别警告不要修改其输出,因为解释器可能无法反映本地范围的更改.我假设这意味着Python规范不需要它,即使它在CPython中工作.

我想知道globals()是否相同.文档中没有任何警告,但我觉得奇怪的是,这会有所不同,因为每个函数显然在不同的范围内执行相同的操作.

如果它是安全的,修改globals()'输出将改善我正在处理的项目的简单性和兼容性.

python globals

21
推荐指数
1
解决办法
1979
查看次数

什么是"泄漏"到全球范围?

不久之前,我提出了一个JavaScript设计模式(模块模式 - 见下文),我从John Resig的例子中得到了一个解决某人问题的一部分,我收到了以下评论:

"......这种模式有点过于设计而不是那么好.仍然渗透到全球范围.而你不打开自己的异步装载机.但它比ad-hoc编码更好!"

所以…

如果"泄漏"到全局范围意味着"您的对象被附加到浏览器窗口(对象)"......那么所有内容都已经被追加(全局):

这"泄漏"到全球范围:

window.jQuery
Run Code Online (Sandbox Code Playgroud)

...只需调用: window.jQuery并将其解析为函数();

这"泄漏"到全球范围:

function HelloWorld() { alert(‘Howdy’); }
Run Code Online (Sandbox Code Playgroud)

......打电话给window.HelloWorld()你:你会得到'你好'.

这"泄漏"到全球范围:

var myVariable = 10;
Run Code Online (Sandbox Code Playgroud)

......打电话给window.myVariable你:你会得到10分

如果评论者是正确的,那么以上所有"泄漏"到全球范围.所以,就个人而言,我没有看到一种不"泄漏"到全局范围内的方法,因为即使你的表单控件也存在(也是如此).

因此,这是我的问题......

  • 什么是"泄漏"到全球范围?
  • 为什么那么糟糕?
  • 你怎么避免它?
  • 当想要创建持久的自定义对象时,为什么模块模式(下面)不好?
  • 设计模式让你封装复杂的逻辑,封装突然变坏只是因为我们用JavaScript编写
  • 或者......这个评论者完全错了吗?

这是我上面提到的模块模式:

<script type="text/javascript">
    var myNamespace = (function($) {
        var publicInstances = {};

        // ***********************
        // myObject
        publicInstances.myObject = myObject;
        function myObject() {

            /// <summary>A pointer to this</summary>
            var self = this;

            this.someProperty = new String();

            this.initialize = function() { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery design-patterns globals

17
推荐指数
2
解决办法
5697
查看次数

声明全局数组

你好.我最近学习了PHP并试图声明一个全局数组,因此我可以访问函数内部.但我似乎错过了一些东西,因为我得到错误'未定义的变量:'

这是我的代码:

global $second_array;
$second_array = array();

function operatii($v) {
  $var1 = $second_array[count($second_array)-1];
  $var2 = $second_array[count($second_array)-2];
  $rez = null;

  echo $var1 . $var2 . "este?";
}

for ($i = 0; $i < count($a); $i++){
  if ($a[$i] === "+" || $a[$i] === "-" || $a[$i] === "*" || $a[$i] === "/" ) {
    operatii($a[$i]);
  } else {
    array_push($second_array, $a[$i]);
  }
}
Run Code Online (Sandbox Code Playgroud)

我似乎能够$second_array在for循环中使用它,但不能在operatii函数中使用它.
我怎么解决这个问题?

php globals

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

模块之间共享资源的良好实践?

我正在重新组织我的代码,从而创建新的命名空间.我正在为模块更改"静态"类(每种方法中带有@staticmethod的类).这是要走的路,对吧?

问题是我对如何在这些模块之间共享资源有疑问.

假设我有一个模块,我从中与数据库建立了所有连接,当然所有类/方法都共享存储数据库游标的变量(我使用的是SQLite).现在,在不同的模块中,他们还必须共享光标.

依赖的图形表示

所以,我的想法:

  • 在每个模块中声明全局变量.但全球化是邪恶的,吃孩子并偷走我们的工作.所以我不知道这是不是要走的路.

    '''Sub Module 1'''
    
    global database_cursor
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用原始database_cursor导入"father"database_module并使用如下内容:

    '''Sub Module 1'''
    
    db_cursor = database_module.database_cursor
    
    Run Code Online (Sandbox Code Playgroud)

在这种情况下,第二个看起来很好,但我认为在许多情况下会导致递归导入,我想这是要避免的.

python namespaces module globals

11
推荐指数
1
解决办法
5317
查看次数

如何在C#库中创建全局对象

可能重复:
整个应用程序可以访问的数据(可能在运行时更改)的最佳方法是什么?

我有一个C#库.

  1. 库可以有全局对象/变量吗?
  2. 在运行主项目时,是否可以从库中自动执行这些对象的初始化方法,还是必须使其成为静态方法并从主项目运行它?

c# dll initialization globals

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