相关疑难解决方法(0)

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

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

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:修改函数内的全局列表

首先,我理解我可以使用globalstatement来访问全局变量.但不知何故,我能够修改一个全局列表,global如下所示:

def func1(nums):
    nums = [4,5,6]

nums = [1,2,3]
func1(nums)
print nums # print [1,2,3]

def func2(nums):
    nums[0] = 4
    nums[1] = 5
    nums[2] = 6

nums = [1,2,3]
func2(nums)
print nums # print [4,5,6]
Run Code Online (Sandbox Code Playgroud)

在尝试了func2之后,我意识到如果我指定索引,我总是可以访问函数中的全局列表:

def func3(nums):
    nums[:] = [4,5,6]

nums = [1,2,3]
func3(nums)
print nums # print [4,5,6]
Run Code Online (Sandbox Code Playgroud)

是因为如果在定义之前使用函数变量,Python会自动尝试匹配全局变量吗?

谢谢.

python function global-variables

7
推荐指数
2
解决办法
7049
查看次数

标签 统计

global-variables ×3

python ×3

function ×1