python補全函數(shù)名 python快捷鍵

如何將ipython添加入spyder的python console中

剛開始接觸Python的時候,網(wǎng)上找到的資料基本上上來就是介紹Python語言,很少有對開發(fā)環(huán)境進行講解的,但如果在學習的過程中不斷練習,這樣效率會更高,所以特意將一個Python的開發(fā)環(huán)境Spyder自帶的入門教程翻譯出來,希望可以幫助到和我有同樣困惑的你。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比永州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式永州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋永州地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

個人水平有限,會有翻譯不到位的地方,歡迎批評指正!

Spyder是使用Python編程語言進行科學計算的集成開發(fā)環(huán)境。它有一個Editor(編輯器)用于編寫代碼,Console(控制臺)可以評估代碼并且在任何時候都可以看到運行結(jié)果,Variable Explorer(變量管理器)可以查看代碼中定義的變量,還有其他的一些設(shè)備可以幫你高效地開發(fā)代碼。

本教程由英國南安普頓大學的Hans Fangohr所寫。

使用Spyder的第一步

這部分內(nèi)容針對Python和Spyder的初學者,如果你覺得太簡單,請繼續(xù)學習下一部分內(nèi)容。

執(zhí)行一段代碼

我們將使用這段代碼作為第一個例子:

# Demo file for Spyder Tutorial

# Hans Fangohr, University of Southampton, UK

def hello():

"""Print "Hello World" and return None"""

print("Hello World")

# main program starts here

hello()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

為了使用這段代碼,請在Spyder的Editor(編輯窗)新建一個文件。將代碼拷貝到文件中,并以hello.py文件名保存該文件。

為了執(zhí)行這段代碼,從菜單中選擇Run Run(或者按F5鍵),如果有需要請確認Run settings的設(shè)置。如果這是第一次運行代碼,你可能會看到如下形式的輸出:

In [1]: runfile('/Users/fangohr/Desktop/hello.py', wdir=r'/Users/fangohr/Desktop')

Hello World

In [2]:

這說明你已經(jīng)成功運行了第一個Python程序。

注意:

runfile旁邊顯示的具體路徑取決于你剛剛保存文件的位置。

1

2

3

4

使用IPython Console

我們推薦您使用IPython Console,因為它比標準的Python Console的功能更多,并且建議您將它設(shè)置為默認控制臺。

在執(zhí)行代碼的過程中到底發(fā)生了什么?

Python逐行讀取Editor中的代碼,并且它會自動忽略注釋(即以#符號開頭的行)。

當遇到def關(guān)鍵字,Python知道在這里定義了一個函數(shù)。在def hello():之后的所有縮進行都是函數(shù)體。

注意:這個函數(shù)對象僅僅只是在文件的這個位置被定義了,并沒有被調(diào)用(或者執(zhí)行)。

當Python遇到從最左邊的列開始寫的命令(除了def…和其他一些關(guān)鍵字),它將馬上執(zhí)行這些命令。在hello.py文件中只在hello()的這一行才正真調(diào)用名為hello的函數(shù)。

如果你在代碼中注釋掉或者刪除hello()這一行,再次執(zhí)行整個文件(按F5鍵或者選擇 Run Run),將不會打印任何內(nèi)容,因為函數(shù)hello只被定義了,但沒有被調(diào)用。

通過使用IPython Console,現(xiàn)在你應(yīng)該知道Spyder中Editor窗口中的Python代碼是如何執(zhí)行的了。

如果你剛開始學習Python,現(xiàn)在最好返回到課本或者課程中練習更多的程序?qū)嵗?/p>

下一部分內(nèi)容將詳細介紹如何在IPython Console中執(zhí)行Editor窗口中的代碼段,然后更新Editor中的部分定義。這是一種更先進的技術(shù),并且非常有用。(你可能對執(zhí)行被分隔符隔開的代碼塊(也稱為“cells”)也感興趣,可以查看——功能快捷鍵)。

調(diào)用console中的函數(shù)

你一旦執(zhí)行了hello.py文件,函數(shù)對象hello就被定義了,并且IPython console也知道了它的存在。因此,我們可以用如下方式在console中調(diào)用函數(shù):

在console中寫入hello()(靠近In[?],?可以是任意正整數(shù)),然后按下Enter鍵。

你應(yīng)該發(fā)現(xiàn)hello()函數(shù)又被執(zhí)行了一遍,Hello World又被打印了一次。在console中調(diào) 用函數(shù)和輸出的形式應(yīng)該如下:

In [ ]: hello()

Hello World

1

2

你能發(fā)現(xiàn)它和執(zhí)行整個代碼之間的區(qū)別嗎?

當你執(zhí)行整個代碼時,Python會遍歷整個文件,創(chuàng)建一個hello函數(shù)對象(覆蓋之間的 對象),當?shù)竭_hello()這一行就調(diào)用這個函數(shù)。

如果我們在console中調(diào)用hello(),我們只是調(diào)用了之前執(zhí)行整個hello.py文件在IPython console中定義的函數(shù)對象hello。

這些概念在多次練習或者處理更大一些的代碼實例后會更加清楚。在稍后的階段中你可能還會返回此教程。

查看定義在console中的對象

Python提供了一個函數(shù),它可以顯示console中當前命名空間中所有已知的對象。它就是dir():當你在console中寫入dir(),你將得到一個對象列表?,F(xiàn)在忽略所有以下劃線開始的。你能看見hello在列表中嗎?

注意:

如果你得到了一個定義對象的長列表,那么Spyder可能已經(jīng)為你做了一些方便的導入。 為了強調(diào)這一點,你需要:

按上文介紹的步驟運行dir()。

重啟命名空間

按F5鍵再次執(zhí)行hello.py

一旦一個對象在當前命名空間中可見(例如本例中的hello),我們可以使用help函數(shù)了解這個對象:在console提示區(qū)寫入help(hello),你應(yīng)該可以看到如下的輸出:

In [ ]: help(hello)

Help on function hello in module __main__:

hello()

Print "Hello World" and return None

Python從哪獲取的信息呢?其中一些信息(例如輸入的參數(shù)個數(shù)和變量名稱,這里我們沒有輸入?yún)?shù))Python可以通過檢查對象獲得,另外一些信息源自于提供給函數(shù)對象hello的文檔字符串。文檔字符串就是緊挨著def hello():的下一行字符串。

這些字符串很特殊,他們被稱為docstring,是documentation strings的縮寫。它們通常有好幾行,并且被三個單引號( ’ ’ ’ )或者三個雙引號(“ ” ” )封裝起來。

1

2

3

4

5

Spyder開發(fā)環(huán)境同樣提供了Help窗口,通常默認位于右上角。

當光標在一個對象名字之上,按下CTRL+i(在MAC中按下CMD+i),我們可以獲得同使用help(hello)一樣的信息。

這在console和Editor中都起作用。

更新對象

簡單策略:重新執(zhí)行整個程序

在Editor窗口,修改函數(shù)hello使其輸出Good Bye World而不是Hello World。

按F5鍵執(zhí)行整個程序,然后檢查當前程序的輸出:

Good Bye World

1

當你按下F5鍵時發(fā)生了什么?其實,Python遍歷的整個hello.py文件,創(chuàng)建了一個新的函數(shù)對象hello(覆蓋了之前的函數(shù)對象hello),然后執(zhí)行了整個函數(shù)。

我們看一下細節(jié)

我們需要從一個定義清晰的情形開始。為了做到這一點,請你將函數(shù)hello()改回輸出Hello World的情況,然后按F5鍵執(zhí)行整個程序,檢查輸出應(yīng)該是Hello World。

在console命令提示區(qū)調(diào)用hello()函數(shù)。你會看到輸出Hello World。

現(xiàn)在在editor窗口改變函數(shù)使其打印Laters World,然后保存文件,但不要執(zhí)行程序(不按F5鍵)。

在console中調(diào)用hello()函數(shù)。你會看到輸出是Hello World,如下:

In [ ]: hello()

Hello World

為什么會這樣?因為console中的hello函數(shù)對象是打印Hello World的舊的函數(shù)對象。因此,因此我們在editor中改變hello.py(用Laters World代替了Hello World)文件并不會影響之前在console中創(chuàng)建的對象。

1

2

有兩種方法可以更新hello函數(shù)的版本:

方法一:按F5鍵重新執(zhí)行整個hello.py文件,這一操作會生成一個新的hello函數(shù)對象,并覆蓋舊的。你會發(fā)現(xiàn),當你按下F5鍵,在console命令提示區(qū)調(diào)用hello(),會輸出新的文本Laters World。

方法二:選中你改變的區(qū)域,在這個例子中是整個hello函數(shù),從def hello():開始到print(“Laters World”)結(jié)束,然后選擇Run Run selections。

這樣就會更新console中的hello對象,而不用重新執(zhí)行整個hello.py文件:

In [ ]: def hello():

...: """Print "Hello World" and return None"""

...: print("Laters world")

...:

如果現(xiàn)在寫入hello(),我們會看到更新后的輸出:

In [ ]: hello()

Laters world

1

2

1

2

3

4

在console中通過執(zhí)行部分代碼(上述例子中我們升級了函數(shù)對象hello)來升級一些對象的能,對于將來開發(fā)和調(diào)試更復雜的代碼非常有用,也會節(jié)省在console中創(chuàng)建對象或數(shù)據(jù)的時間。例如,只修改我們真正想要調(diào)試的函數(shù)(或者類/對象),我們可以繼續(xù)使用當前console中定義的數(shù)據(jù)和其他對象。

Python初學者的第一步

對于Python編程教學和學習,我們推薦使用IPython console而不是Python console,這在科學Python社區(qū)被認為是事實上的標準。

轉(zhuǎn)換到IPython console

如果你已經(jīng)有一個激活的IPython console,那么你可忽略這部分內(nèi)容,只要用鼠標點擊“IPython console”就使它可見了。

在console窗口中(默認位于右下角),在默認情況下用3個大于號最為提示,如。這表示我們使用的是普通的Python console(Spyder新增了一些功能)。

然而我們更喜歡使用交互式的Python console(Interactive Python console),即IPython console。因此,選擇Console Open an IPython Console。

你可以看到在console窗口中產(chǎn)生了一個新的命令窗,IPython 的提示區(qū)是In [ 1 ]:

重置命名空間

命名空間(在任何給定時間內(nèi)在console中定義的對象集合)在IPython中可以使用%reset命令清除。輸入%reset然后按下enter鍵,用y確認:

In [1]: %reset

Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [2]:12345

這就可以了。

我們對它進行更深一層的討論,倘若你不感興趣,也可以跳過這部分內(nèi)容:使用%reset命令之后,在當前會話中只有少部分對象在命名空間中。我們可以使用dir()把他們都列出來:

In [2]: dir()

Out[2]:

['In',

'Out',

'__builtin__',

'__builtins__',

'__name__',

'_dh',

'_i',

'_i2',

'_ih',

'_ii',

'_iii',

'_oh',

'_sh',

'exit',

'get_ipython',

'help',

'quit']12345678910111213141516171819

最后,如果你想在使用reset命令時跳過確認步驟,你可以使用%reset -f命令。

遵守PEP8規(guī)則

除了由Pyhton編程語言執(zhí)行的語法之外,關(guān)于源代碼的布局還有其他約定,特別是Style Guide for Python source code即大家所熟知的“PEP8”。遵循這一規(guī)則,盡可能寫出相同風格的代碼,這樣,對于代碼的作者和用戶就更容易讀和調(diào)試。

你需要修改Spyder的設(shè)置,如果觸犯了PEP8的編碼規(guī)則,就會自動警告。

參數(shù)設(shè)置

參數(shù)在哪配置

很多Spyder的行為都可以通過配置參數(shù)實現(xiàn)。而它們在菜單的位置取決于你是用的操作系統(tǒng):

在Windows和linux系統(tǒng),使用Tools Preferences

在Mac OS中,使用Python/spyder Preferences

設(shè)置PEP8規(guī)則檢測警告

Preferences Editor Code Introspection/Analysis,然后勾選Style analysis(PEP8)。

激活sympy模式

通過Preferences IPython console Advanced Settings Use symbolic math激活I(lǐng)Python的sympy模式,這個模式由sympy模塊提供。Spyder中的這一模式提供了非常好的渲染過的數(shù)學上的輸出(LaTeX風格),并匯報它完成了什么。在IPython console啟動時自動導入一些sympy對象。

These commands were executed:

from __future__ import division

from sympy import *

x, y, z, t = symbols('x y z t')

k, m, n = symbols('k m n', integer=True)

f, g, h = symbols('f g h', cls=Function)123456

我們可以使用變量x,y:

方便的快捷方式

F5執(zhí)行當前文件。

Tab鍵自動補全命令、函數(shù)名、變量名、Console(Python和IPython)和Editor中的方法名。這個特點也很有用,將來你可能會頻繁地使用?,F(xiàn)在你就可以嘗試一下這一功能。假設(shè)你定義了一個變量:

mylongvariablename = 42

假設(shè)我們需要寫代碼計算mylongvariablename + 100,我們只需要輸入 my 然后按Tab鍵。如果這個變量名是唯一的,在光標位置會自動補齊變量名,然后再繼續(xù)輸入 + 100。如果以字母my開頭的變量名不是唯一的,按下Tab鍵之后會列出所有以my開頭的變量名以供選擇,之后可以使用上下鍵選擇,也可以輸入更多的字母匹配。

Ctrl+Enter執(zhí)行當前cell(在菜單中Run Run Cell)。Cell是以#%%開頭的兩行之間的代碼。

Shift+Enter執(zhí)行當前cell并將光標移到下一個cell(菜單中選擇Run Run cell and advance)。

Cells可實現(xiàn)將大的文件或代碼段以小單元執(zhí)行。

Alt+把當前行向上移一行。如果很多行被選中,它們將被一起移動。 Alt+則是相對應(yīng)的將某(些)行向下移。

Ctrl+鼠標左鍵 在一個函數(shù)/方法名上使用Ctrl+鼠標左鍵,打開一個新的editor窗口顯示這個函數(shù)的定義。

Ctrl + +(Cmd + +在MacOS),將增大Editor窗口的字體,Ctrl + -則相反。在IPython窗口中也適用。

Help或者python console窗口中的字體則通過Preferences Help設(shè)置。

Variable Explorer則沒辦法改變。

Ctrl + s(Cmd + s在MacOS上)保存當前Editor窗的文件。這還會在編輯器的左欄中強制更新各種警告三角形(否則它們默認2到3秒更新一次)。

Ctrl + s(Cmd + s在MacOS上)在IPython console窗將會把當前IPython會話以HTML文件保存,包括任何顯示在命令行的參數(shù)。這樣可以快速記錄在會話中完成了什么。

(但是不能將這個HTML 文件再次加載到會話中,如果你需要這樣的功能,請查看 IPython Notebook。)

Ctrl + i(Cmd + i在MacOS上),當光標在一個對象上時使用,將在help窗口顯示這個對象的文檔。

執(zhí)行設(shè)置

這些設(shè)置定義當我們選擇Run Run或者按了F5鍵Editor中的代碼如何執(zhí)行的。

默認情況下,當我們第一次執(zhí)行一個文件時設(shè)置會出現(xiàn)。如果我們想改變設(shè)置,可以選擇Run Configure或者按F6找到它們。

對于console有3種方法可用,我們將討論其中兩種。我們假設(shè)在Editor中有如下形式的hello.py程序:

def hello(name):

"""Given an object 'name', print 'Hello ' and the object."""

print("Hello {}".format(name))

i = 42

if __name__ == "__main__":

hello(i)12345678

在當前Python或者IPython console中執(zhí)行

這是一個建議,通常也是一個很好的選擇。

存在的對象I(執(zhí)行代碼之后)

選擇Run Configure下的Execute in current Python or IPython console這一設(shè)置,意味著:

1.當完全執(zhí)行hello.py,我們可以和執(zhí)行代碼的console交互,并且我們可以很方便的使用IPython console做到這一點。

2.我們可以檢查對象,也可以和執(zhí)行代碼創(chuàng)建的對象交互,例如i和hello()。

這種方法對于遞增式的編程、測試和調(diào)試都非常有用:我們可以在console的命令提示區(qū)直接調(diào)用hello()函數(shù),而不用執(zhí)行整個hello.py文件。

存在的對象II(從代碼執(zhí)行前開始)

然而,在當前console中執(zhí)行Editor中的代碼也意味著:

3.其他定義與console會話中的其他(全局)對象對于執(zhí)行的代碼也是可見的。

這些對象的存在很容被遺忘,對于小量級的代碼也不是必須的。這些對象可能源自于之前執(zhí)行的代碼,也可能來自console中的交互式工作,又或是源于一些導入(例如from pylab import *,Spyder也可能會自動導入)。

如果無意間依賴于這些對象,控制臺命名空間中對象的可見性可能會導致代碼出錯。

實例如下:我們可以想象:

運行hello.py文件,變量i在console中就是一個全局變量。

編輯hello.py文件,刪除i = 42這一行。

再次執(zhí)行hello.py文件。在這時調(diào)用hello(i)依然不會出錯,即使現(xiàn)在的hello.py文件中已經(jīng)沒有定義i,因為console中之前已經(jīng)存在變量i了。

這時,我們保存hello.py文件,本想著可以正確執(zhí)行。但是,在新的(I)Python console會話中執(zhí)行代碼卻導致錯誤,因為i并沒有被定義。

這一問題的出現(xiàn)是因為代碼使用了一個代碼本身沒有創(chuàng)建的對象(這里是i)。這一問題同樣會影響模塊導入:如果我們在IPython console命令提示區(qū)導入了pylab,它對于我們在IPython console會話中執(zhí)行的代碼就是可見的。

為了學習如何確認我們的代碼并沒有依賴于已經(jīng)存在的對象,請看“如何雙重檢查你的代碼是獨立正確運行的”這部分內(nèi)容。

在一個獨立的Python console中運行

在Run Configure下選擇Execute in new dedicated Python console,在每次運行hello.py程序時都會重新開啟一個新的Python console。它的主要優(yōu)點在于,在這一模式下我們可以確定在執(zhí)行代碼時的console中不會有源自于之前調(diào)試和執(zhí)行代碼產(chǎn)生的對象。這樣,每次執(zhí)行editor中的代碼,python console都是新的。

這一選擇很安全,但是靈活性下降,并且不能使用IPython console。

如何雙重檢查你的代碼是獨立正確運行的

假設(shè)你已經(jīng)選擇 Execute in current Python or IPython console這一選項,你有兩種方法可以確認你的代碼時獨立運行的(例如,代碼不依賴于未定義的變量,未導入的模塊和命令)。

1.從 Execute in current Python or IPython console換到 Execute in new dedicated Python console這一選項,然后再獨立的Python console中運行Editor中的代碼。

另一種方法你也可以選擇。如果你想繼續(xù)使用當前的IPython console,你可以

2.使用IPython console的%reset命令,這將會移除所有當前命名空間中的對象(如上述例子中的變量i),然后再執(zhí)行Editor中的代碼。

建議

我給初學者的建議是使用 Execute in current Python or IPython console,然后選擇IPython console。

一旦你完成了一段代碼,你都可以使用上述的兩種方法確認你的代碼是否獨立運行。

其他需要注意的內(nèi)容

多文件

如果在Editor中打開了多個文件,窗口頂部文件名對應(yīng)的標簽從左往右是以字母表順序排列的。

在左側(cè)的標簽,有一個圖標,當鼠標移到它上面會顯示Browse tabs。在很多文件打開時,它可以使你能直接跳轉(zhuǎn)到某一文件。

環(huán)境變量

環(huán)境變量可以在Python Console窗口中顯示。單擊Options圖標(提示信息就是Options),然后選擇Environment variables。

重置個性化設(shè)置

所有個性化設(shè)置都可以被重置,調(diào)用以–reset結(jié)尾的命令行。例如:spyder –reset。

Variable Explorer中的對象

在variable explorer中選擇變量,鼠標右鍵,將會給出進一步分析它們的選項。

鼠標雙擊一個字典對象,將會在一個新的窗口中顯示這個字典。

你同樣可以顯示和編輯數(shù)組、列表、數(shù)字和字符串。

說明文檔的格式

如果你想為你正開發(fā)的代碼添加說明(我們也推薦您為它編寫說明),那就使用被稱為reStructuredText的特殊格式。這種格式需要遵守叫做 Numpydoc standard的標準。

你遵照那些指導,就可以在Spyder中編寫非常漂亮的說明。

例如,為了在Spyder的Help窗口中得到如下展示的average()函數(shù):

你應(yīng)該以如下形式編輯說明文字:

def average(a, b):

"""

Given two numbers a and b, return their average value.

Parameters

----------

a : number

A number

b : number

Another number

Returns

-------

res : number

The average of a and b, computed using 0.5*(a + b)

Example

-------

average(5, 10)

7.5

"""

return (a + b) * 0.5123456789101112131415161718192021222324

需要注意的是,這里使用了Parameters關(guān)鍵字,并且有下劃線。a : number這一行告訴我們參數(shù)a是一個數(shù)。下一行是補充說明,我們可以給出更加詳細的解釋,這個變量代表什么,它的數(shù)據(jù)類型應(yīng)該滿足什么條件等等。

對于其他參數(shù)和返回值都可按這個形式編寫。

python 自定義函數(shù) fsum()計算多個數(shù)的和請在1,2填空處添加適當?shù)拇a將程序補充完整?

為了補充完整這個函數(shù),你可以在填空1處使用 input() 函數(shù)讀入用戶輸入的數(shù)據(jù),并使用 eval() 函數(shù)將其轉(zhuǎn)換為 Python 對象,然后使用 Python 的解包語法獲取第一個數(shù)和剩余的數(shù)的列表。

填空2處可以使用 print() 函數(shù)將函數(shù)的返回值輸出到屏幕上。

完整的代碼如下:

def fsum(a):

s = 0

for n in a:

s += n

return s

b, *a = eval(input('請輸入n個數(shù):'))

print(fsum(a))

python jupyter notebook 怎么運行程序

1、首先我們打開電腦找到并打開jupyter notebook。

2、點擊jupyter notebook時,會出來黑色的控制臺,剛開始頁面是全黑的,這個時候需要耐心等待下,程序其實已經(jīng)在運行了。

3、當控制臺開始出現(xiàn)滿屏的代碼時,程序同時會自動打開瀏覽器。(這個時候不要關(guān)閉控制臺,也不要關(guān)閉瀏覽器)

4、程序運行完畢后,保持控制臺的運行狀態(tài)(將其最小化但不要關(guān)閉)。接下來在網(wǎng)頁上操作jupyter notebook。找到頁面右邊的“New”字樣,點擊。

5、在下拉的菜單點擊“python”字樣。

6、這樣一個新的python文件就新建好了,在頁面中心的長方形框中輸入我們的想要運行的代碼。

python中函數(shù)定義

1、函數(shù)定義

①使用def關(guān)鍵字定義函數(shù)

def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):

"""文檔字符串,docstring,用來說明函數(shù)的作用"""

#函數(shù)體

return 表達式

注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。

③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學中的函數(shù)的本質(zhì)是一致的。

2、函數(shù)調(diào)用

①函數(shù)必須先定義,才能調(diào)用,否則會報錯。

②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)

③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。

④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。

⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。

當前標題:python補全函數(shù)名 python快捷鍵
轉(zhuǎn)載來源:http://muchs.cn/article6/doeisog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站、微信小程序、做網(wǎng)站小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)