下面的代码在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() 但是,当我取消注释行(B)时 ,我得到一个UnboundLocalError: 'c' not assigned在行(A) 。 a和b的值被正确打印。 这让我完全困惑,原因有两个: 为什么在行(A)上有一个运行时错误,因为(B)行后面的语句? 为什么variablesa和b按预期打印,而c会产生错误? 唯一可以解释的是, 局部variablesc由c+=1赋值,即使在创build局部variables之前,它也比“全局”variablesc更为先进。 当然,在variables存在之前,variables“偷窃”范围是没有意义的。 有人可以解释这种行为吗?
在OSX中修改环境variables(如PATH)的正确方法是什么? 我看了一下Google,find了3个不同的文件来编辑: 的/ etc /path 〜/ .profile文件 〜/ .tcshrc文件 我甚至没有这些文件,我很确定.tcshrc是错误的,因为OSX现在使用bash。 任何人都知道这些variables,特别是PATH的定义? 编辑:我正在运行OS X 10.5
我怎样才能得到使用PHP的客户端IP地址? 我想保留通过他/她的IP地址login到我的网站的用户的logging。
是否有可能在Python中有静态类variables或方法? 需要什么语法来做到这一点?
我有一个目录,其中包含我所有的Django应用程序( C:\My_Projects )。 我想把这个目录添加到我的pythonpath所以我可以直接调用这个应用程序。 我曾尝试添加C:\My_Projects\; 到我的Pathvariables从Windows GUI( My Computer > Properties > Advanced System Settings > Environment Variables )。 但它仍然不会读取coltrane模块并生成此错误: 错误:没有名为coltrane的模块
我想在java中分配一组variables,如下所示: int n1,n2,n3; for(int i=1;i<4;i++) { n<i> = 5; } 我怎样才能在Java中实现这一点?
我遇到了一个关于C#的有趣的问题。 我有像下面的代码。 List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) { Console.WriteLine(act.Invoke()); } 我期望它输出0,2,4,6,8。然而,它实际上输出了5个10。 这似乎是由于所有的行动都指向一个被捕获的variables。 因此,当它们被调用时,它们都具有相同的输出。 有没有办法绕过这个限制让每个动作实例都有自己的捕获variables?
我正在创build一个需要login的应用程序。 我创build了主要和login活动。 在主要活动onCreate方法中,我添加了以下条件: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); … loadSettings(); if(strSessionString == null) { login(); } … } 在login表单终止时执行的onActivityResult方法如下所示: @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case(SHOW_SUBACTICITY_LOGIN): { if(resultCode == Activity.RESULT_OK) { strSessionString = data.getStringExtra(Login.SESSIONSTRING); connectionAvailable = true; strUsername = data.getStringExtra(Login.USERNAME); } } } 问题是login表单有时会出现两次( […]
我实际上不知道如何描述我想要的东西,但我会告诉你: 例如: $data1 = "the color is"; $data2 = "red"; 我该怎么做(或处理)所以$ result是$data1和$data2的组合? 预期结果: $result = "the color is red";
我可以在不同的函数中访问局部variables吗? 如果是这样,怎么样? void replaceNumberAndPrint(int array[3]) { printf("%i\n", array[1]); printf("%i\n", array[1]); } int * getArray() { int myArray[3] = {4, 65, 23}; return myArray; } int main() { replaceNumberAndPrint(getArray()); } 上面这段代码的输出: 65 4202656 我究竟做错了什么? “4202656”是什么意思? 我必须复制replaceNumberAndPrint()函数中的整个数组才能访问它比第一次?