<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 問題 將代碼組織成包,想用import語句從另一個包名沒有硬編碼過的包的中導入子模塊。 ## 解決方案 使用包的相對導入,使一個的模塊導入同一個包的另一個模塊 舉個例子,假設在你的文件系統上有mypackage包,組織如下: ~~~ mypackage/ __init__.py A/ __init__.py spam.py grok.py B/ __init__.py bar.py ~~~ 如果模塊mypackage.A.spam要導入同目錄下的模塊grok,它應該包括的import語句如下: ~~~ # mypackage/A/spam.py from . import grok ~~~ 如果模塊mypackage.A.spam要導入不同目錄下的模塊B.bar,它應該使用的import語句如下: ~~~ # mypackage/A/spam.py from ..B import bar ~~~ 兩個import語句都沒包含頂層包名,而是使用了spam.py的相對路徑。 ## 討論 在包內,既可以使用相對路徑也可以使用絕對路徑來導入。 舉個例子: ~~~ # mypackage/A/spam.py from mypackage.A import grok # OK from . import grok # OK import grok # Error (not found) ~~~ 像mypackage.A這樣使用絕對路徑名的不利之處是這將頂層包名硬編碼到你的源碼中。如果你想重新組織它,你的代碼將更脆,很難工作。 舉個例子,如果你改變了包名,你就必須檢查所有文件來修正源碼。 同樣,硬編碼的名稱會使移動代碼變得困難。舉個例子,也許有人想安裝兩個不同版本的軟件包,只通過名稱區分它們。 如果使用相對導入,那一切都ok,然而使用絕對路徑名很可能會出問題。 import語句的?`<span class="pre" style="box-sizing: border-box;">.</span>`?和?[``](http://python3-cookbook.readthedocs.org/zh_CN/latest/c10/p03_import_submodules_by_relative_names.html#id5)..``看起來很滑稽, 但它指定目錄名.為當前目錄,..B為目錄../B。這種語法只適用于import。 舉個例子: ~~~ from . import grok # OK import .grok # ERROR ~~~ 盡管使用相對導入看起來像是瀏覽文件系統,但是不能到定義包的目錄之外。也就是說,使用點的這種模式從不是包的目錄中導入將會引發錯誤。 最后,相對導入只適用于在合適的包中的模塊。尤其是在頂層的腳本的簡單模塊中,它們將不起作用。如果包的部分被作為腳本直接執行,那它們將不起作用 例如: ~~~ % python3 mypackage/A/spam.py # Relative imports fail ~~~ 另一方面,如果你使用Python的-m選項來執行先前的腳本,相對導入將會正確運行。 例如: ~~~ % python3 -m mypackage.A.spam # Relative imports work ~~~ 更多的包的相對導入的背景知識,請看?[PEP 328](http://www.python.org/dev/peps/pep-0328)?.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看