国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

菜鳥(niǎo)教程《Python 3 教程》筆記(16):模塊

這篇具有很好參考價(jià)值的文章主要介紹了菜鳥(niǎo)教程《Python 3 教程》筆記(16):模塊。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

筆記帶有個(gè)人側(cè)重點(diǎn),不追求面面俱到。

16 模塊(具體不懂)

出處: 菜鳥(niǎo)教程 - Python3 模塊

模塊 是一個(gè)包含所有你定義的函數(shù)和變量的文件,其后綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數(shù)等功能。

16.1 import 語(yǔ)句

不管執(zhí)行了多少次 import,一個(gè)模塊只會(huì)被導(dǎo)入一次。

使用 import 語(yǔ)句的時(shí)候,Python 解釋器會(huì)從搜索路徑中依次尋找所引入的模塊。搜索路徑可以通過(guò) sys 模塊中的 path 變量進(jìn)行查看。

>>> import sys
>>> sys.path
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
>>> 

sys.path 輸出是一個(gè)列表,其中第一項(xiàng)是空串 ‘’,代表當(dāng)前目錄(若是從一個(gè)腳本中打印出來(lái)的話(huà),可以更清楚地看出是哪個(gè)目錄),亦即我們執(zhí)行python解釋器的目錄(對(duì)于腳本的話(huà)就是運(yùn)行的腳本所在的目錄)。

不要使用 from package import *
推薦使用 import packagefrom package import item。

16.2 深入模塊

模塊除了方法定義,還可以包括可執(zhí)行的代碼。這些代碼一般用來(lái)初始化這個(gè)模塊。這些代碼只有在第一次被導(dǎo)入時(shí)才會(huì)被執(zhí)行。

每個(gè)模塊有各自獨(dú)立的符號(hào)表,在模塊內(nèi)部為所有的函數(shù)當(dāng)作全局符號(hào)表來(lái)使用。所以,模塊的作者可以放心大膽的在模塊內(nèi)部使用這些全局變量,而不用擔(dān)心把其他用戶(hù)的全局變量搞混。從另一個(gè)方面,當(dāng)你確實(shí)知道你在做什么的話(huà),你也可以通過(guò) modname.itemname 這樣的表示法來(lái)訪問(wèn)模塊內(nèi)的函數(shù)。

16.3 __name__屬性

一個(gè)模塊被另一個(gè)程序第一次引入時(shí),其主程序?qū)⑦\(yùn)行。 如果我們想在模塊被引入時(shí),模塊中的某一程序塊不執(zhí)行,可以用 __name__ 屬性來(lái)使該程序塊僅在該模塊自身運(yùn)行時(shí)執(zhí)行。每個(gè)模塊都有一個(gè) __name__ 屬性,當(dāng)其值是 __main__ 時(shí),表明該模塊自身在運(yùn)行,否則是被引入。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
   print('程序自身在運(yùn)行')
else:
   print('我來(lái)自另一模塊')

輸出:

>>> python using_name.py
程序自身在運(yùn)行
>>> import using_name
我來(lái)自另一模塊

16.4 dir() 函數(shù)

內(nèi)置的函數(shù) dir() 可以找到模塊內(nèi)定義的所有名稱(chēng)。以一個(gè)字符串列表的形式返回。

>>> a = 1
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a']
>>> import sys
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'sys']
>>> dir(sys)
['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', 
'__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', 
'_base_executable', '_clear_type_cache', '_current_exceptions', '_current_frames', '_deactivate_opcache', 
'_debugmallocstats', '_enablelegacywindowsfsencoding', '_framework', '_getframe', '_git', '_home', '_xoptions', 
'addaudithook', 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 'breakpointhook', 
'builtin_module_names', 'byteorder', 'call_tracing', 'copyright', 'displayhook', 'dllhandle', 
'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 
'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', 'get_int_max_str_digits', 
'getallocatedblocks', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 
'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 
'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 
'meta_path', 'modules', 'orig_argv', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'platlibdir', 
'prefix', 'ps1', 'ps2', 'pycache_prefix', 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 
'set_int_max_str_digits', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin',
 'stdlib_module_names', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 'warnoptions', 'winver']

16.5 包

是一種管理 Python 模塊命名空間的形式,采用 “點(diǎn)模塊名稱(chēng)”。比如一個(gè)模塊的名稱(chēng)是 A.B, 那么他表示一個(gè)包 A中的子模塊 B 。

這里給出了一種可能的包結(jié)構(gòu)(在分層的文件系統(tǒng)中):

sound/                          頂層包
      __init__.py               初始化 sound 包
      formats/                  文件格式轉(zhuǎn)換子包
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  聲音效果子包
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  filters 子包
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

在導(dǎo)入一個(gè)包的時(shí)候,Python 會(huì)根據(jù) sys.path 中的目錄來(lái)尋找這個(gè)包中包含的子目錄。

目錄只有包含一個(gè)叫做 __init__.py 的文件才會(huì)被認(rèn)作是一個(gè)包,主要是為了避免一些濫俗的名字(比如叫做 string)不小心的影響搜索路徑中的有效模塊。

# 導(dǎo)入方式
import sound.effects.echo
# 調(diào)用方式
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
# 導(dǎo)入方式
import sound.effects import echo
# 調(diào)用方式
echo.echofilter(input, output, delay=0.7, atten=4)
# 導(dǎo)入方式
from sound.effects.echo import echofilter
# 調(diào)用方式
echofilter(input, output, delay=0.7, atten=4)

當(dāng)使用 from package import item 這種形式的時(shí)候,import 語(yǔ)法會(huì)首先把 item 當(dāng)作一個(gè)包定義的名稱(chēng),如果沒(méi)找到,再試圖按照一個(gè)模塊去導(dǎo)入。如果還沒(méi)找到,拋出一個(gè) :exc:ImportError 異常。

反之,如果使用形如 import item.subitem.subsubitem 這種導(dǎo)入形式,除了最后一項(xiàng),都必須是包,而最后一項(xiàng)則可以是模塊或者是包,但是不可以是類(lèi),函數(shù)或者變量的名字。

16.6 從一個(gè)包中導(dǎo)入*

如果包定義文件 __init__.py 存在一個(gè)叫做 __all__ 的列表變量,那么在使用 from package import * 的時(shí)候就把這個(gè)列表中的所有名字作為包內(nèi)容導(dǎo)入。

__all__ = ["echo", "surround", "reverse"]

如果 __all__ 真的沒(méi)有定義,那么使用 from sound.effects import * 這種語(yǔ)法的時(shí)候,就不會(huì)導(dǎo)入包 sound.effects 里的任何子模塊。他只是把包 sound.effects 和它里面定義的所有內(nèi)容導(dǎo)入進(jìn)來(lái)(可能運(yùn)行 __init__.py 里定義的初始化代碼)。

擴(kuò)展閱讀: CSDN Python 入門(mén)技能樹(shù)-預(yù)備知識(shí)-模塊管理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-699711.html

到了這里,關(guān)于菜鳥(niǎo)教程《Python 3 教程》筆記(16):模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 菜鳥(niǎo)教程《Python 3 教程》筆記(19):錯(cuò)誤與異常

    菜鳥(niǎo)教程《Python 3 教程》筆記(19):錯(cuò)誤與異常

    筆記帶有個(gè)人側(cè)重點(diǎn),不追求面面俱到。 出處: 菜鳥(niǎo)教程 - Python3 錯(cuò)誤和異常 Python 有兩種錯(cuò)誤很容易辨認(rèn): 語(yǔ)法錯(cuò)誤 和 異常 。 assert (斷言)用于判斷一個(gè)表達(dá)式,在表達(dá)式條件為 false 的時(shí)候觸發(fā)異常。斷言可以在條件不滿(mǎn)足程序運(yùn)行的情況下直接返回錯(cuò)誤,而不必等待

    2024年02月09日
    瀏覽(20)
  • 菜鳥(niǎo)教程《Python 3 教程》筆記(15):數(shù)據(jù)結(jié)構(gòu)

    筆記帶有個(gè)人側(cè)重點(diǎn),不追求面面俱到。 出處: 菜鳥(niǎo)教程 - Python3 數(shù)據(jù)結(jié)構(gòu) 在列表的最后添加或者彈出元素速度快,然而在列表里插入或者從頭部彈出速度卻不快(因?yàn)樗衅渌脑囟嫉靡粋€(gè)一個(gè)地移動(dòng))。 遍歷字典: 遍歷列表: 遍歷多個(gè)序列: 反向遍歷:

    2024年02月10日
    瀏覽(29)
  • 菜鳥(niǎo)教程《Python 3 教程》筆記 EX 01:命令行參數(shù)

    筆記帶有個(gè)人側(cè)重點(diǎn),不追求面面俱到。 出處: 菜鳥(niǎo)教程 - Python3 命令行參數(shù) Python 中可以所用 sys 的 sys.argv 來(lái)獲取命令行參數(shù): 注意: sys.argv[0] 為腳本名。 實(shí)例: test.py 文件: 運(yùn)行結(jié)果: getopt 模塊是專(zhuān)門(mén)處理命令行參數(shù)的模塊,用于獲取命令行選項(xiàng)和參數(shù)。該模塊提供

    2024年02月10日
    瀏覽(21)
  • Python 3 | 菜鳥(niǎo)教程 (一)

    Python 3 | 菜鳥(niǎo)教程 (一)

    目錄 一、Python3 簡(jiǎn)介 二、Python 發(fā)展歷史 三、Python 特點(diǎn) (一)易于學(xué)習(xí) (二)易于閱讀 (三)易于維護(hù) (四)一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù) (五)互動(dòng)模式 (六)可移植 (七)可擴(kuò)展 (八)數(shù)據(jù)庫(kù) (九)GUI編程 (十)可嵌入 四、Python 應(yīng)用 五、 Python3 環(huán)境搭建 六、Python3 下載 七

    2024年02月09日
    瀏覽(20)
  • Python教程_編程入門(mén)自學(xué)教程_菜鳥(niǎo)教程-免費(fèi)教程分享

    Python - 教程 Python - 概述 Python - 環(huán)境設(shè)置 Python - 基本語(yǔ)法 Python - 變量類(lèi)型 Python - 基本運(yùn)算符 Python - 決策 Python - 循環(huán) Python - 數(shù)字 Python - 字符串 Python - 列表 Python - 元組 Python - 字典 Python - 日期和時(shí)間 Python - 功能 Python - 模塊 Python - 文件I / O. Python - 異常處理 Python - 面向?qū)ο?/p>

    2024年02月02日
    瀏覽(25)
  • python菜鳥(niǎo)教程-矩陣對(duì)應(yīng)位置相加

    兩個(gè) 3 行 3 列的矩陣,實(shí)現(xiàn)其對(duì)應(yīng)位置的數(shù)據(jù)相加,并返回一個(gè)新矩陣: X = [[12,7,3], ????[4 ,5,6], ????[7 ,8,9]] Y = [[5,8,1], ????[6,7,3], ????[4,5,9]] 程序分析:創(chuàng)建一個(gè)新的 3 行 3 列的矩陣,使用 for 迭代并取出 X 和 Y 矩陣中對(duì)應(yīng)位置的值,相加后放到新矩陣的對(duì)應(yīng)位置中。

    2024年04月23日
    瀏覽(19)
  • Python3 函數(shù)與數(shù)據(jù)結(jié)構(gòu) | 菜鳥(niǎo)教程(十一)

    Python3 函數(shù)與數(shù)據(jù)結(jié)構(gòu) | 菜鳥(niǎo)教程(十一)

    目錄 一、Python3 函數(shù) (一)定義一個(gè)函數(shù) 1、你可以定義一個(gè)由自己想要功能的函數(shù),以下是簡(jiǎn)單的規(guī)則: ?2、語(yǔ)法 3、實(shí)例 ①讓我們使用函數(shù)來(lái)輸出\\\"Hello World!\\\": ②更復(fù)雜點(diǎn)的應(yīng)用,函數(shù)中帶上參數(shù)變量: Ⅰ實(shí)例:比較兩個(gè)數(shù),并返回較大的數(shù): Ⅱ?qū)嵗河?jì)算面積函數(shù): (

    2024年02月11日
    瀏覽(23)
  • 使用Python pymysql連接Mysql數(shù)據(jù)庫(kù)-菜鳥(niǎo)教程

    使用Python pymysql連接Mysql數(shù)據(jù)庫(kù)-菜鳥(niǎo)教程

    1、安裝pymysql模塊 pip install pymysql 2、啟動(dòng)Mysql數(shù)據(jù)庫(kù)服務(wù) net start mysql80 ?3、連接數(shù)據(jù)庫(kù) 運(yùn)行結(jié)果如下 ?4、創(chuàng)建數(shù)據(jù)庫(kù)表 執(zhí)行成功后,在本地登錄mysql數(shù)據(jù)庫(kù)進(jìn)行查看驗(yàn)證 ? 5、數(shù)據(jù)庫(kù)插入操作 ?執(zhí)行程序后在本地查看驗(yàn)證 ?6、數(shù)據(jù)庫(kù)查詢(xún)操作 Python查詢(xún)Mysql使用 fetchone() 方法

    2024年02月04日
    瀏覽(20)
  • 菜鳥(niǎo)教程筆記:TypeScript

    菜鳥(niǎo)教程筆記:TypeScript

    1.在ts文件中:Runoob.ts 2.通過(guò)tsc命令編譯 3.得到j(luò)s代碼:Runoob.js 4.使用node來(lái)執(zhí)行js代碼 我們可以同時(shí)編譯多個(gè)ts文件: ts會(huì)忽略 空格 , 制表符 , 換行符 理解:對(duì)現(xiàn)實(shí)世界理解和抽象的方法 面向?qū)ο笥袃蓚€(gè)概念:對(duì)象和類(lèi) 對(duì)象:類(lèi)的一個(gè)實(shí)例,有狀態(tài)和行為。 類(lèi):是一個(gè)模板

    2024年02月07日
    瀏覽(23)
  • HTML 教程 |菜鳥(niǎo)教程

    HTML 教程 |菜鳥(niǎo)教程

    ? ?在學(xué)習(xí)html之前?你首先得要下載一個(gè)Visual?Studio?Code軟件,這個(gè)軟件在Microsoft?edge或者是其他的瀏覽器都可以下載到。 Visual Studio Code - Code Editing. Redefined https://code.visualstudio.com/ ? ? ?在軟件下載好之后,在初始頁(yè)面的左下角有個(gè)齒輪,我們點(diǎn)擊進(jìn)行一些必要的插件,點(diǎn)擊

    2024年02月04日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包