梦想加空间 -久久高清免费视频- 一个程序猿的个人博客网站

您現(xiàn)在的位置是:首頁 >python教程 >python教程十九 模塊網(wǎng)站首頁python教程

python教程十九 模塊

三只小菜猿 2023-02-17 11:53:52
簡介模塊是可以導(dǎo)入其他模塊的。在一個模塊(或者腳本,或者其他地方)的最前面使用 import 來導(dǎo)入一個模塊,當(dāng)然這只是一個慣例,而不是強(qiáng)制的。現(xiàn)存很多種不同的音頻文件格式(基本上都是通過后綴名區(qū)分的,例如: .wav,:file:.aiff,:file:.au,),所以你需要有一組不斷增加的模塊,用來在不同的格式之間轉(zhuǎn)換。注意當(dāng)使用 from package import item 這種形式的時候,對應(yīng)的 item 既可以是包里面的子模塊(子包),或者包里面定義的其他名稱,比如函數(shù),類或者變量。

模塊

在前面的幾個章節(jié)中我們基本上是用 python 解釋器來編程,如果你從 Python 解釋器退出再進(jìn)入,那么你定義的所有的方法和變量就都消失了。

為此 Python 提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。

模塊是一個包含所有你定義的函數(shù)和變量的文件,其后綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數(shù)等功能。這也是使用 python 標(biāo)準(zhǔn)庫的方法。

下面是一個使用 python 標(biāo)準(zhǔn)庫中模塊的例子。

#!/usr/bin/python3
# 文件名: using_sys.py
 
import sys
 
print('命令行參數(shù)如下:')
for i in sys.argv:
   print(i)
 
print(' Python 路徑為:', sys.path, ' ')

執(zhí)行結(jié)果如下所示:

$ python using_sys.py 參數(shù)1 參數(shù)2 命令行參數(shù)如下: using_sys.py 參數(shù)1 參數(shù)2 Python 路徑為: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload'

1、import sys 引入 python 標(biāo)準(zhǔn)庫中的 sys.py 模塊;這是引入某一模塊的方法。 2、sys.argv 是一個包含命令行參數(shù)的列表。 3、sys.path 包含了一個 Python 解釋器自動查找所需模塊的路徑的列表。

import 語句

想使用 Python 源文件,只需在另一個源文件里執(zhí)行 import 語句,語法如下:

import module1[, module2[,... moduleN]

當(dāng)解釋器遇到 import 語句,如果模塊在當(dāng)前的搜索路徑就會被導(dǎo)入。

搜索路徑是一個解釋器會先進(jìn)行搜索的所有目錄的列表。如想要導(dǎo)入模塊 support,需要把命令放在腳本的頂端:

#!/usr/bin/python3
# Filename: support.py
 
def print_func( par ):
    print ("Hello : ", par)
    return

test.py 引入 support 模塊:

#!/usr/bin/python3
# Filename: test.py
 
# 導(dǎo)入模塊
import support
 
# 現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了
support.print_func("Caiyuan")

以上實例輸出結(jié)果:

$ python3 test.py Hello :  Caiyuan

一個模塊只會被導(dǎo)入一次,不管你執(zhí)行了多少次 import。這樣可以防止導(dǎo)入模塊被一遍又一遍地執(zhí)行。

當(dāng)我們使用 import 語句的時候,Python 解釋器是怎樣找到對應(yīng)的文件的呢?

這就涉及到 Python 的搜索路徑,搜索路徑是由一系列目錄名組成的,Python 解釋器就依次從這些目錄中去尋找所引入的模塊。

這看起來很像環(huán)境變量,事實上,也可以通過定義環(huán)境變量的方式來確定搜索路徑。

搜索路徑是在 Python 編譯或安裝的時候確定的,安裝新的庫應(yīng)該也會修改。搜索路徑被存儲在 sys 模塊中的 path 變量,做一個簡單的實驗,在交互式解釋器中,輸入以下代碼:

>>> 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 輸出是一個列表,其中第一項是空串 '',代表當(dāng)前目錄(若是從一個腳本中打印出來的話,可以更清楚地看出是哪個目錄),亦即我們執(zhí)行python解釋器的目錄(對于腳本的話就是運行的腳本所在的目錄)。

因此若像我一樣在當(dāng)前目錄下存在與要引入模塊同名的文件,就會把要引入的模塊屏蔽掉。

了解了搜索路徑的概念,就可以在腳本中修改sys.path來引入一些不在搜索路徑中的模塊。

現(xiàn)在,在解釋器的當(dāng)前目錄或者 sys.path 中的一個目錄里面來創(chuàng)建一個fibo.py的文件,代碼如下:

# 斐波那契(fibonacci)數(shù)列模塊
 
def fib(n):    # 定義到 n 的斐波那契數(shù)列
    a, b = 01
    while b < n:
        print(b, end=' ')
        a, b = b, a+b
    print()
 
def fib2(n): # 返回到 n 的斐波那契數(shù)列
    result = []
    a, b = 01
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result

然后進(jìn)入Python解釋器,使用下面的命令導(dǎo)入這個模塊:

>>> import fibo

這樣做并沒有把直接定義在fibo中的函數(shù)名稱寫入到當(dāng)前符號表里,只是把模塊fibo的名字寫到了那里。

可以使用模塊名稱來訪問函數(shù):

>>>fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1123581321345589]
>>> fibo.__name__
'fibo'

如果你打算經(jīng)常使用一個函數(shù),你可以把它賦給一個本地的名稱:

>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

from … import 語句

Python 的 from 語句讓你從模塊中導(dǎo)入一個指定的部分到當(dāng)前命名空間中,語法如下:

from modname import name1[, name2[, ... nameN]]

例如,要導(dǎo)入模塊 fibo 的 fib 函數(shù),使用如下語句:

>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

這個聲明不會把整個fibo模塊導(dǎo)入到當(dāng)前的命名空間中,它只會將fibo里的fib函數(shù)引入進(jìn)來。

from … import * 語句

把一個模塊的所有內(nèi)容全都導(dǎo)入到當(dāng)前的命名空間也是可行的,只需使用如下聲明:

from modname import *

這提供了一個簡單的方法來導(dǎo)入一個模塊中的所有項目。然而這種聲明不該被過多地使用。

深入模塊

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

每個模塊有各自獨立的符號表,在模塊內(nèi)部為所有的函數(shù)當(dāng)作全局符號表來使用。

所以,模塊的作者可以放心大膽的在模塊內(nèi)部使用這些全局變量,而不用擔(dān)心把其他用戶的全局變量搞混。

從另一個方面,當(dāng)你確實知道你在做什么的話,你也可以通過 modname.itemname 這樣的表示法來訪問模塊內(nèi)的函數(shù)。

模塊是可以導(dǎo)入其他模塊的。在一個模塊(或者腳本,或者其他地方)的最前面使用 import 來導(dǎo)入一個模塊,當(dāng)然這只是一個慣例,而不是強(qiáng)制的。被導(dǎo)入的模塊的名稱將被放入當(dāng)前操作的模塊的符號表中。

還有一種導(dǎo)入的方法,可以使用 import 直接把模塊內(nèi)(函數(shù),變量的)名稱導(dǎo)入到當(dāng)前操作模塊。比如:

>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

這種導(dǎo)入的方法不會把被導(dǎo)入的模塊的名稱放在當(dāng)前的字符表中(所以在這個例子里面,fibo 這個名稱是沒有定義的)。

這還有一種方法,可以一次性的把模塊中的所有(函數(shù),變量)名稱都導(dǎo)入到當(dāng)前模塊的字符表:

>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

這將把所有的名字都導(dǎo)入進(jìn)來,但是那些由單一下劃線(_)開頭的名字不在此例。大多數(shù)情況, Python程序員不使用這種方法,因為引入的其它來源的命名,很可能覆蓋了已有的定義。

__name__屬性

一個模塊被另一個程序第一次引入時,其主程序?qū)⑦\行。如果我們想在模塊被引入時,模塊中的某一程序塊不執(zhí)行,我們可以用__name__屬性來使該程序塊僅在該模塊自身運行時執(zhí)行。

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

if __name__ == '__main__':
   print('程序自身在運行')
else:
   print('我來自另一模塊')

運行輸出如下:

$ python using_name.py 程序自身在運行

$ python
>>> import using_name
我來自另一模塊
>>>

說明: 每個模塊都有一個__name__屬性,當(dāng)其值是'main'時,表明該模塊自身在運行,否則是被引入。

說明:__name__ 與 main 底下是雙下劃線, _ _ 是這樣去掉中間的那個空格。

dir() 函數(shù)

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

>>> import fibo, sys
>>> dir(fibo)
['__name__''fib''fib2']
>>> dir(sys)  
['__displayhook__''__doc__''__excepthook__''__loader__''__name__',
 '__package__''__stderr__''__stdin__''__stdout__',
 '_clear_type_cache''_current_frames''_debugmallocstats''_getframe',
 '_home''_mercurial''_xoptions''abiflags''api_version''argv',
 'base_exec_prefix''base_prefix''builtin_module_names''byteorder',
 'call_tracing''callstats''copyright''displayhook',
 'dont_write_bytecode''exc_info''excepthook''exec_prefix',
 'executable''exit''flags''float_info''float_repr_style',
 'getcheckinterval''getdefaultencoding''getdlopenflags',
 'getfilesystemencoding''getobjects''getprofile''getrecursionlimit',
 'getrefcount''getsizeof''getswitchinterval''gettotalrefcount',
 'gettrace''hash_info''hexversion''implementation''int_info',
 'intern''maxsize''maxunicode''meta_path''modules''path',
 'path_hooks''path_importer_cache''platform''prefix''ps1',
 'setcheckinterval''setdlopenflags''setprofile''setrecursionlimit',
 'setswitchinterval''settrace''stderr''stdin''stdout',
 'thread_info''version''version_info''warnoptions']

如果沒有給定參數(shù),那么 dir() 函數(shù)會羅列出當(dāng)前定義的所有名稱:

>>> a = [12345]
>>> import fibo
>>> fib = fibo.fib
>>> dir() # 得到一個當(dāng)前模塊中定義的屬性列表
['__builtins__''__name__''a''fib''fibo''sys']
>>> a = 5 # 建立一個新的變量 'a'
>>> dir()
['__builtins__''__doc__''__name__''a''sys']
>>>
>>> del a # 刪除變量名a
>>>
>>> dir()
['__builtins__''__doc__''__name__''sys']
>>>

標(biāo)準(zhǔn)模塊

Python 本身帶著一些標(biāo)準(zhǔn)的模塊庫,在 Python 庫參考文檔中將會介紹到(就是后面的"庫參考文檔")。

有些模塊直接被構(gòu)建在解析器里,這些雖然不是一些語言內(nèi)置的功能,但是他卻能很高效的使用,甚至是系統(tǒng)級調(diào)用也沒問題。

這些組件會根據(jù)不同的操作系統(tǒng)進(jìn)行不同形式的配置,比如 winreg 這個模塊就只會提供給 Windows 系統(tǒng)。

應(yīng)該注意到這有一個特別的模塊 sys ,它內(nèi)置在每一個 Python 解析器中。變量 sys.ps1 和 sys.ps2 定義了主提示符和副提示符所對應(yīng)的字符串:

>>> import sys
>>> sys.ps1
'>>> '
>>> sys.ps2
'... '
>>> sys.ps1 = 'C> '
C> print('Caiyuan!')
Caiyuan!
C> 

包是一種管理 Python 模塊命名空間的形式,采用"點模塊名稱"。

比如一個模塊的名稱是 A.B, 那么他表示一個包 A中的子模塊 B 。

就好像使用模塊的時候,你不用擔(dān)心不同模塊之間的全局變量相互影響一樣,采用點模塊名稱這種形式也不用擔(dān)心不同庫之間的模塊重名的情況。

這樣不同的作者都可以提供 NumPy 模塊,或者是 Python 圖形庫。

不妨假設(shè)你想設(shè)計一套統(tǒng)一處理聲音文件和數(shù)據(jù)的模塊(或者稱之為一個"包")。

現(xiàn)存很多種不同的音頻文件格式(基本上都是通過后綴名區(qū)分的,例如: .wav,:file:.aiff,:file:.au,),所以你需要有一組不斷增加的模塊,用來在不同的格式之間轉(zhuǎn)換。

并且針對這些音頻數(shù)據(jù),還有很多不同的操作(比如混音,添加回聲,增加均衡器功能,創(chuàng)建人造立體聲效果),所以你還需要一組怎么也寫不完的模塊來處理這些操作。

這里給出了一種可能的包結(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)入一個包的時候,Python 會根據(jù) sys.path 中的目錄來尋找這個包中包含的子目錄。

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

最簡單的情況,放一個空的 :file:init.py就可以了。當(dāng)然這個文件中也可以包含一些初始化代碼或者為(將在后面介紹的) __all__變量賦值。

用戶可以每次只導(dǎo)入一個包里面的特定模塊,比如:

import sound.effects.echo

這將會導(dǎo)入子模塊:sound.effects.echo。 他必須使用全名去訪問:

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

還有一種導(dǎo)入子模塊的方法是:

from sound.effects import echo

這同樣會導(dǎo)入子模塊: echo,并且他不需要那些冗長的前綴,所以他可以這樣使用:

echo.echofilter(input, output, delay=0.7, atten=4)

還有一種變化就是直接導(dǎo)入一個函數(shù)或者變量:

from sound.effects.echo import echofilter 同樣的,這種方法會導(dǎo)入子模塊: echo,并且可以直接使用他的 echofilter() 函數(shù):

echofilter(input, output, delay=0.7, atten=4)

注意當(dāng)使用 from package import item 這種形式的時候,對應(yīng)的 item 既可以是包里面的子模塊(子包),或者包里面定義的其他名稱,比如函數(shù),類或者變量。

import 語法會首先把 item 當(dāng)作一個包定義的名稱,如果沒找到,再試圖按照一個模塊去導(dǎo)入。如果還沒找到,拋出一個 :exc:ImportError 異常。

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

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

如果我們使用 from sound.effects import * 會發(fā)生什么呢?

Python 會進(jìn)入文件系統(tǒng),找到這個包里面所有的子模塊,然后一個一個的把它們都導(dǎo)入進(jìn)來。

但這個方法在 Windows 平臺上工作的就不是非常好,因為 Windows 是一個不區(qū)分大小寫的系統(tǒng)。

在 Windows 平臺上,我們無法確定一個叫做 ECHO.py 的文件導(dǎo)入為模塊是 echo 還是 Echo,或者是 ECHO。

為了解決這個問題,我們只需要提供一個精確包的索引。

導(dǎo)入語句遵循如下規(guī)則:如果包定義文件 init.py 存在一個叫做 all 的列表變量,那么在使用 from package import * 的時候就把這個列表中的所有名字作為包內(nèi)容導(dǎo)入。

作為包的作者,可別忘了在更新包之后保證 all 也更新了啊。

以下實例在 file:sounds/effects/init.py 中包含如下代碼:

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

這表示當(dāng)你使用from sound.effects import *這種用法時,你只會導(dǎo)入包里面這三個子模塊。

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

這會把 init.py 里面定義的所有名字導(dǎo)入進(jìn)來。并且他不會破壞掉我們在這句話之前導(dǎo)入的所有明確指定的模塊。看下這部分代碼:

import sound.effects.echo import sound.effects.surround from sound.effects import *

這個例子中,在執(zhí)行 from...import 前,包 sound.effects 中的 echo 和 surround 模塊都被導(dǎo)入到當(dāng)前的命名空間中了。(當(dāng)然如果定義了 all 就更沒問題了)

通常我們并不主張使用 * 這種方法來導(dǎo)入模塊,因為這種方法經(jīng)常會導(dǎo)致代碼的可讀性降低。不過這樣倒的確是可以省去不少敲鍵的功夫,而且一些模塊都設(shè)計成了只能通過特定的方法導(dǎo)入。

記住,使用 from Package import specific_submodule 這種方法永遠(yuǎn)不會有錯。事實上,這也是推薦的方法。除非是你要導(dǎo)入的子模塊有可能和其他包的子模塊重名。

如果在結(jié)構(gòu)中包是一個子包(比如這個例子中對于包sound來說),而你又想導(dǎo)入兄弟包(同級別的包)你就得使用導(dǎo)入絕對的路徑來導(dǎo)入。比如,如果模塊sound.filters.vocoder 要使用包 sound.effects 中的模塊 echo,你就要寫成 from sound.effects import echo。

from . import echo from .. import formats from ..filters import equalizer

無論是隱式的還是顯式的相對導(dǎo)入都是從當(dāng)前模塊開始的。主模塊的名字永遠(yuǎn)是"main",一個Python應(yīng)用程序的主模塊,應(yīng)當(dāng)總是使用絕對路徑引用。

包還提供一個額外的屬性__path__。這是一個目錄列表,里面每一個包含的目錄都有為這個包服務(wù)的__init__.py,你得在其他__init__.py被執(zhí)行前定義哦。可以修改這個變量,用來影響包含在包里面的模塊和子包。

這個功能并不常用,一般用來擴(kuò)展包里面的模塊。


夢想加空間!平時喜歡研究各種技術(shù),目前在從事后端開發(fā)工作,熱愛生活、熱愛工作。
主站蜘蛛池模板: 耐磨锤头|合金锤头|高铬耐磨锤头|破碎机锤头|双金属双液复合锤头_巩义东辰实业 合金耐磨锤头铸造厂 | 西安防静电地板_防静电地板厂家_防静电地板价格_OA网络地板_写字楼架空地板_机房墙板安装-红梅防静电地板厂家直销 | 辽宁华宇设备安装有限公司--朝阳消防安装公司,朝阳机电安装公司,朝阳电力安装公司 | 售后服务认证-五星级物业售后服务体系认证证书-ISO27001信息安全管理体系认证证书查询认E云-湖北省贯标企业管理咨询有限公司 | 葡萄糖酸钠_食用葡萄糖_精萘-安徽鹏腾实业有限公司 | 江门市东信科技 - 江门小程序开发,江门网站制作,江门软件开发,江门app开发 | 無谷轻食官网_沙拉轻食加盟_轻食加盟总部_轻食加盟费用 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 | 猪粪烘干机|小型鸡粪烘干机|猪粪烘干机价格|小型鸡粪烘干机价格 - 河南宏科重工干燥机设备生产厂家 | 真空机器人维修_晶圆机械手保养_半导体机械臂维修_面板机器人保养_AMHS改造-广州市广科智能技术有限公司 | 种植槽系统,移动苗床,多层种植货架,潮汐苗床,物流苗床,潮汐面板,立体旋转育秧床,河北博超温室设备有限公司 | 山东致合必拓环保科技股份有限公司 | 济宁市天众机械有限公司_机械加工,电力产品,冶金产品,造纸机械 | 河南桥式起重机-河南门式起重机-宇华起重设备集团(官网) | 珠海拾比佰彩图板股份有限公司 | 热熔钻孔机【优质厂家】_多年热熔钻设备研发制造经验 | 全自动高速点胶机,锡膏喷印机系列,点胶阀核心配件厂家-博宁 | 机械配件加工_数控车床加工_零件加工_精密件加工_cnc加工定制—深圳精密机械加工 | 聚氨酯碰头,聚氨酯托辊,聚氨酯地辊/地滚轮/地轮/托绳轮-济宁卓力聚氨酯制品有限公司 | 专注客流统计,客流分析,人流统计系统,客流计数器-广州市天威电子科技有限公司 | 户外工程照明|洗墙灯厂家|聚翔(广东)照明科技有限公司 | 江苏工业双氧水_工业亚硝酸钠的作用与用途_工业双氧水厂家-江苏连云港嘉一化工厂 | 昆明子弟食品有限公司| 紫外线光疗仪|白癜风光疗仪|牛皮癣治疗仪|308纳米led|SIGMA|上海希格玛高技术有限公司 | 西安木包装箱出口托盘定做价格-抽真空实木包装箱免熏蒸木箱多层板木箱哪家好-模压托盘及白松原木-西安宇森木业 | 中式婚礼_汉服婚礼_传统婚礼_婚庆公司_云歌婚礼策划【官网】 | 喜来顺财经-专注于财经领域的综合性网站 | 泊头市特种油泵阀制造有限公司&nbsp;-&nbsp;渣油泵,重油泵,沥青泵,高压齿轮泵,煤焦油泵,导热油泵,三螺杆泵,圆弧齿轮泵,不锈钢齿轮泵, | 陶瓷纤维模块|陶瓷纤维毯|陶瓷纤维纸|高温隔热材料|陶瓷纤维厂家-济南火龙热陶瓷有限责任公司 | 南通出国劳务公司-如东海外经济技术合作有限公司-启东,海门,如皋,海安出国劳务 | 三原图库 - 设计图片素材打包下载sytuku.com | 洒水车厂家、消防车、污水处理车厂家-程力专用汽车股份有限公司 洒水车|冷藏车|LED广告车|油罐车|道路救援车|垃圾车|程力专用汽车股份有限公司销售九分公司 | 南京企业宣传片制作,广告形象片,影视制作,宣传片拍摄,微电影拍摄制作公司 | 佳龙食品集团|高端辣条领导品牌 佳龙食品集团|高端辣条领导品牌 | 暖通家-中国暖通空调及热泵产业资讯平台,专业为厂家和商家提供价值服务 | 济南牛皮癣专科研究院_「济南市银屑病医院」_济南治牛皮癣医保医院_济南正规的银屑病医院 | 石家庄华龙鼎电动门,石家庄电动门电话,石家庄电动门配件,石家庄电动门维修电话,石家庄电动门安装电话,石家庄华龙电动门 | 专业提供医疗器械,医疗设备,进口国产医疗设备,医疗耗材采购,医疗设备厂家等医疗器械信息-上海聚慕医疗器械有限公司 | 青山套筒_直螺纹钢筋连接套筒加工_全灌浆套筒灌浆料_半灌浆套筒生产-衡水安达机械设备有限公司 | 热电阻_热电偶_压力表_压力变送器_磁翻板液位计 - 淮安忠和测控仪表有限公司 |