日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

模块的四种形式 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包...

發布時間:2025/6/17 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模块的四种形式 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 模塊的四種形式
    • 什么是模塊
    • 模塊的四種形式
      • 自定義模塊
      • 第三方模塊
      • 內置模塊
    • 使用模塊的好處
  • 模塊的調用
  • 循環導入問題
  • 模塊的搜索路徑
  • py文件的兩種用途
  • 編譯python文件
    • 什么是包
    • 我的理解

模塊的四種形式

什么是模塊

模塊就是一些列功能的集合體,就是一堆函數放在一個.py文件中,模塊的名字是根據文件名字取的,和文件的名字是一樣的

模塊的四種形式

自定義模塊

和字面意思一樣,就是自己定義的模塊,也就是自己寫的一個py文件,在文件里面寫很多的函數

第三方模塊

已被編譯為共享庫或者DLL的c或c++擴展

內置模塊

使用c編寫并鏈接到python解釋器的內置模塊

把一些列模塊組織到一起,就給“包”起來

使用模塊的好處

可以提升開發效率

然后就是分工明確,可以很清楚的去寫代碼,以及理解代碼

模塊的調用

import

from...import

相同點:

  • 兩者都會執行模塊對應的文件,兩者都會產生模塊的名稱空間
  • 兩者調用功能時,需要跑到定義時尋找作用域關系,與調用位置無關
  • 不同點

  • import需要加前綴;from...import...不需要加前綴
  • 循環導入問題

    就是在調用的時候會出現另一個py文件中也會執行調用我們在用的文件,就會出現報錯的情況。

    然后就是我在學習這個過程中以為導包一直執行

    其實導包只會執行一次

    所以不會像我想的一樣一直會循環導著沒完

    還有就是解決循環導入問題的方法就是避免循環導入

    模塊的搜索路徑

    導入模塊時查找模塊的順序是:

  • 先從內存中已經導入的模塊中尋找
  • 內置的模塊
  • 環境變量sys.path中找
  • py文件的兩種用途

    python文件總共有兩種用途,一種是執行文件;另一種是被當作模塊導入。

    編寫好的的一個python文件可以有兩種用途:

    ? 1.腳本,一個文件就是整個程序,用來被執行(也就是在文件里面有執行包內函數的語句,直接import調用文件就可以直接執行 文件中的執行語句,在調用文件的地方打印)
    ? 2.模塊,文件中存放著一堆功能,用來被導入使用(也就是在文件中存放著很多個寫好的函數,但是 沒有執行語句,可以使用 from 文件名 import 某個函數名調用模塊中的需要使用的一個功能)

    還有就是一個將調用的運行變為自己小秘密的時候的操作

    如果直接運行run.py會直接運行aaa.py中的f1()和f2(),但是如果我們在aaa.py中加上if __name__ == '__main__':這句話,則可以防止運行run.py時執行f1()和f2()。因為當aaa.py被直接執行,即當做執行文件的時候__name__ == '__main__'; 在aaa.py被當做模塊直接運行的時候__name__ == 'aaa'。由此可以讓aaa.py在不同的場景下有著不同的用法。

    # aaa.pyx = 1def f1():print('from f1')def f2():print('from f2')if __name__ == '__main__':f1()f2()

    直觀理解:

    對于當前運行的程序test.py而言,name 變量的值是"main"。

    如果run.py調用了test.py,即import test,那么對test.py而言__name__變量的值是"test",對于run.py而言__name__變量的值是"main"。

    背后原因:

    有時我們寫了可以直接被執行的模塊(.py文件),但是在另一個程序中調用它時,我們其實只是想用一用里面寫好的函數,而不是全都執行一遍。那么我們就可以把執行的部分放到if name == 'main' 中進行判斷。

    如果if name == 'main' 為真,就說明我們是在直接執行這個模塊,那么所有的操作都要運行一遍;但如果為假,就說明我們是引用了這個模塊,只有在需要用到它的函數時,才會被調用執行。

    編譯python文件

    (了解)

    https://www.cnblogs.com/nickchen121/p/10802465.html

    什么是包

    包是模塊的一種形式,包的本質就是一個含有.py的文件的文件夾

    我的理解

    其實包就是給我們所編寫的模塊的一個整合,里面是可以包括py文件以及其他的包,還有就是在包里面有一個__init__.py文件,就相當于給包下面的文件一個目錄的形式讓包外面的文件可以直接調用包名,達到調用包里面的模塊的作用,還有就是我發現如果init文件中有一個沒有導入進來,包外文件在調用的時候如果采用 from 包名 import 模塊名的方法調用的話,會執行以一遍init中的調用,如果說init導入的模塊中含有類似于print的打印的東西,就會導致終端上不僅會打印你調用文件的內容,還會打印init所調用的內容,還有就是再init中寫下調用包內模塊的語句,調用會更加方便。(個人理解,還沒有去系統學習,只是自己看了之后,總結一下的)

    轉載于:https://www.cnblogs.com/xiongchao0823/p/11360525.html

    總結

    以上是生活随笔為你收集整理的模块的四种形式 模块的调用 循环导入问题 模块的搜索路径 py文件的两种用途 编译python文件 包...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。