亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

導入模塊中全局變量的可見性

導入模塊中全局變量的可見性

喵喵時光機 2019-08-01 02:02:59
導入模塊中全局變量的可見性我遇到了一些在Python腳本中導入模塊的墻。我將盡我最大的努力來描述這個錯誤,為什么我會遇到它,以及為什么我要綁定這個特定的方法來解決我的問題(稍后我將對此進行描述):假設我有一個模塊,在其中我定義了一些實用函數/類,這些函數/類引用了將這個輔助模塊導入到的命名空間中定義的實體(讓“a”是這樣一個實體):模塊1:def f():     print a然后我有一個主程序,其中定義了“a”,我想將這些實用程序導入其中:import module1 a=3module1.f()執行程序將觸發以下錯誤:Traceback (most recent call last):   File "Z:\Python\main.py", line 10, in <module>     module1.f()   File "Z:\Python\module1.py", line 3, in f    print aNameError: global name 'a' is not defined也有人提出了類似的問題。在過去(兩天前,d‘呃)和一些解決方案已經提出,但我不認為這些真的符合我的要求。以下是我的特殊背景:我正在嘗試制作一個Python程序,它連接到MySQL數據庫服務器,并使用GUI顯示/修改數據。為了整潔起見,我在一個單獨的文件中定義了一系列與MySQL相關的輔助/實用程序函數。然而,它們都有一個公共變量,這是我最初定義的。內實用程序模塊,哪個是光標對象來自MySQLdb模塊。后來我意識到光標對象(用于與db服務器通信)應在主模塊中定義,這樣,主模塊和導入到其中的任何東西都可以訪問該對象。最終的結果應該是這樣的:公用事業_module.py:def utility_1(args):     code which references a variable named "cur"def utility_n(args):     etcetera我的主要模塊是:節目.py:import MySQLdb, Tkinterdb=MySQLdb.connect(#blahblah) ; cur=db.cursor()  #cur is defined!from utilities_module import *然后,當我試圖調用任何實用程序函數時,它就會觸發前面提到的“全局名稱未定義”錯誤。一個特別的建議是在實用程序文件中有一個“FROM程序導入CUR”語句,如下所示:公用事業_module.py:from program import cur#rest of function definitions節目.py:import Tkinter, MySQLdbdb=MySQLdb.connect(#blahblah) ; cur=db.cursor()  #cur is defined!from utilities_module import *但這是循環導入或類似的東西,而且,底線是,它也崩潰了。所以我的問題是:如何才能使主模塊中定義的“cur”對象對導入到其中的輔助函數可見?感謝您的時間和我最深切的歉意,如果解決方案已張貼到其他地方。我自己找不到答案,我的書里再也沒有竅門了。
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號