您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python全局变量似乎无法跨模块工作

Python全局变量似乎无法跨模块工作

简而言之:如果不修改代码,则无法使其打印为“ ok”。

from a import x, changeX 等效于:

import a
x = a.x
changeX = a.changeX
@H_301_9@

换句话说,from a import x不创建x间接指向的a.x,而是xb模块中使用 当前 值创建一个新的全局变量a.x。因此,以后的更改a.x不会影响b.x

为了使您的代码按预期工作,只需将代码更改b.pyimport a

import a
a.changeX()
print a.x
@H_301_9@

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

解决方法

我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。

a.py:

x="fail"
def changeX():
    global x
    x="ok"

b.py:

from a import x,changeX
changeX()
print x

如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。

问题

  1. 这是为什么?
  2. 如何使它打印“确定”呢?

(运行python-2.7)

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
import a
a.changeX()
print a.x
@H_301_9@

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

解决方法

我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。

a.py:

x="fail"
def changeX():
    global x
    x="ok"

b.py:

from a import x,changeX
changeX()
print x

如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。

问题

  1. 这是为什么?
  2. 如何使它打印“确定”呢?

(运行python-2.7)

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
x="fail"
def changeX():
    global x
    x="ok"
from a import x,changeX
changeX()
print x

换句话说,from a import x不创建x间接指向的a.x,而是xb模块中使用 当前 值创建一个新的全局变量a.x。因此,以后的更改a.x不会影响b.x

为了使您的代码按预期工作,只需将代码更改b.pyimport a

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。

a.py:

b.py:

如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。

(运行python-2.7)

换句话说,from a import x不创建x间接指向的a.x,而是xb模块中使用 当前 值创建一个新的全局变量a.x。因此,以后的更改a.x不会影响b.x

为了使您的代码按预期工作,只需将代码更改b.pyimport a

import a
a.changeX()
print a.x
@H_301_9@

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

解决方法

我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。

a.py:

x="fail"
def changeX():
    global x
    x="ok"

b.py:

from a import x,changeX
changeX()
print x

如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。

问题

  1. 这是为什么?
  2. 如何使它打印“确定”呢?

(运行python-2.7)

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
x="fail"
def changeX():
    global x
    x="ok"
from a import x,changeX
changeX()
print x

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

我想在其他模块中使用全局变量,并将其值更改“传播”到其他模块。

a.py:

b.py:

如果我运行b.py,我希望它打印“确定”,但实际上却打印“失败”。

(运行python-2.7)

您将减少混乱的导入,更易于阅读代码(因为无需查看导入列表即可清楚地知道哪个标识符来自何处),循环导入的问题更少(因为并非一次需要所有标识符),并且有更好的机会喜欢reload工作的工具。

python 2022/1/1 18:49:26 有281人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶