python globals exec,python globals:导入vs. execfile

I put a method in a file mymodule.py:

def do_something():

global a

a=1

If I try

>>> execfile('mymodule.py')

>>> do_something()

>>> print a

I get "1" as I expect. But if I import the module instead,

>>> from mymodule import *

and then run do_something(), then the python session knows nothing about the variable "a".

Can anyone explain the difference to me? Thanks.

解决方案

In the second part where you import mymodule, the reason why it isn't showing up is that a is global to the namespace of mymodule as done that way.

Try:

print mymodule.a

This prints:

1

As expected.

The global statement is a declaration which holds for the entire

current code block. It means that the listed identifiers are to be

interpreted as globals. It would be impossible to assign to a global

variable without global, although free variables may refer to globals

without being declared global.

Names listed in a global statement must not be used in the same code

block textually preceding that global statement.

Names listed in a global statement must not be defined as formal

parameters or in a for loop control target, class definition, function

definition, or import statement.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值