一、認識函數(shù)
創(chuàng)新互聯(lián)建站企業(yè)建站,十載網(wǎng)站建設(shè)經(jīng)驗,專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計,有多年建站和網(wǎng)站代運營經(jīng)驗,設(shè)計師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于成都做網(wǎng)站、網(wǎng)站建設(shè)中不同領(lǐng)域進行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準市場調(diào)研,為客戶提供的解決方案。
1 什么是函數(shù)
函數(shù)就是具備某一功能的工具
2 為什么要用函數(shù)
1 程序的組織結(jié)構(gòu)不清晰,可讀性差
2 代碼冗余
3 可擴展性差
3 如何用函數(shù)
函數(shù)的使用必須遵循的原則:先定義,后調(diào)用
修理工事先準備工具的過程即函數(shù)的定義
修理工遇到應(yīng)用場景拿來工具就用即函數(shù)的調(diào)用
語法:
def 函數(shù)名(參數(shù)1,參數(shù)2,...):
"""
文檔注釋
"""
code1
code2
code3
......
return 返回值
def:定義函數(shù)的關(guān)鍵字
函數(shù)名: 就相當(dāng)于一個變量名,指向函數(shù)的內(nèi)存地址,
注意:函數(shù)的內(nèi)存地址()就可以出發(fā)函數(shù)體代碼的執(zhí)行
參數(shù): 參數(shù)是函數(shù)的調(diào)用者為函數(shù)體代碼傳值的媒介,在python中函數(shù)的參數(shù)無需聲明類型
"""文檔注釋""" : 推薦寫上
代碼塊:就是函數(shù)體功能的具體實現(xiàn)
return 返回值 :函數(shù)體代碼塊運行的成果
函數(shù)的使用分為兩個階段:
定義階段: 只檢測語法,不執(zhí)行代碼
調(diào)用階段:運行函數(shù)體代碼
def foo():
xxx
print(
# 先定義
def foo(): print("from foo")
# 后調(diào)用
# 定義時無參,意味著調(diào)用時也無需傳入?yún)?shù)
print(foo) foo()
# 先定義
def bar(x,y): print(x) print(y)
# 后調(diào)用
# 定義時無參,意味著調(diào)用時也必須傳入?yún)?shù)
bar('a',2)
# 定義無參函數(shù):當(dāng)函數(shù)體的代碼邏輯不依賴任何傳入的值就能執(zhí)行,就不需要定義參數(shù)
def print_msg(): print('='*50) print('welecome.....'.center(50,' ')) print('='*50) print_msg() print_msg() ----------------------------------------------------------------- ================================================== welecome..... ================================================== ================================================== welecome..... ==================================================
#定義有參函數(shù):當(dāng)函數(shù)體的代碼邏輯依賴于外部調(diào)用者傳入的值才能執(zhí)行,必須定義參數(shù)用來接收外部傳入的值
def max2(x,y): # x=1 # y=3 if x > y: print(x) else: print(y) max2(1,4) --------------------------------- 4
# 定義階段
def foo(): print('from foo') bar() def bar(): print('from bar')
# 調(diào)用階段
foo()
# 定義階段
def foo(): print('from foo') bar()
# 調(diào)用階段
foo()
def bar(): print('from bar')
二、定義函數(shù)的三種形式
1 無參函數(shù)
def foo(): print('from foo') foo()
2 有參函數(shù)
def bar(x,y): print(x,y) bar(1,2)
3 空函數(shù)
def func(): pass
三、調(diào)用函數(shù)的三種形式
1 #語句形式
def foo(): print('from foo') foo()
2 表達式形式
def foo(x,y): res = x + y return res res=foo(1,2) #表達式形式 res1=foo(1,2)*100 print(res1)
3 可以當(dāng)作參數(shù)傳給另外一個函數(shù)
def max2(x,y): if x > y: return x else: return y res=max2(max2(1,2),3) print(res)
四、函數(shù)的返回值
#一 函數(shù)的返回值需要注意:
#1 返回值沒有類型限制
#2 返回值沒有個數(shù)限制
# 返回1個值:調(diào)用函數(shù)拿到的結(jié)果就是一個值
# 返回多個值:調(diào)用函數(shù)拿到的結(jié)果就是一個元組
# 返回0個值,或者不寫return:調(diào)用函數(shù)拿到的結(jié)果就是None
#二 return關(guān)鍵字:return是函數(shù)結(jié)束的標志,函數(shù)內(nèi)可以有多個return,但只要執(zhí)行一次,整個函數(shù)就結(jié)束
def f1(): print('first') return 1 print('second') return 2 print('third') return 3 res=f1() print(res) ---------------------------------------- first 1 def foo(): count=1 while True: print(count) if count == 3: return count+=1 foo() ------------------------------------------------------ 1 2 3 def bar(): pass def foo(): return [1,2],1,1.3,{'x':1},bar res=foo() print(res) ---------------------------------------------------------------- ([1, 2], 1, 1.3, {'x': 1}, <function bar at 0x000002478D872EA0>) def func(): print('from foo') # return res=func() print(res) ---------------------------------------------------------------------------- from foo None
五、函數(shù)參數(shù)的使用
#函數(shù)的參數(shù)分為兩大類:
#1 形參: 指的是在定義函數(shù)階段括號內(nèi)指定變量名,即形參本質(zhì)就是"變量名"
#2 實參: 指的是在調(diào)用函數(shù)階段括號內(nèi)傳入的值,即實參本質(zhì)就是"值"
# 形參與實參的關(guān)系:在調(diào)用函數(shù)時,會將實參(值)賦值(綁定)給形參(變量名),
# 這種綁定關(guān)系在函數(shù)調(diào)用時臨時生效,在調(diào)用結(jié)束后就失效了
def foo(x,y): # x=1 y=2 # x=1 # y=2 print(x,y) foo(1,2)
# 形參與實參的具體分類
# 一 位置參數(shù)
# 1.1 位置形參: 在定義函數(shù)階段按照從左到右的順序依次定義的形參,稱之為位置形參
# 注意:但凡按照位置定義的形參,必須被傳值,多一個不行,少一個也不行(一一對應(yīng))
def foo(x,y): print(x,y) foo(1,2)
# 1.2 位置實參: 在調(diào)用函數(shù)階段按照從左到右的順序依次傳入的值,稱之為位置實參
# 注意:但凡按照位置定義的實參,會與形參一一對應(yīng)
二 關(guān)鍵字參數(shù)
#關(guān)鍵字實參: 在調(diào)用函數(shù)階段,按照key=value的形式指名道姓地為形參傳值
#注意:
#1. 可以完全打亂順序,但仍然能指名道姓為指定的形參傳值
#2. 可以混合使用位置實參與關(guān)鍵字實參,但是必須注意:
# 2.1 位置實參必須放到關(guān)鍵字實參前面
# 2.2 不能對一個形參重復(fù)賦值
def foo(name,age): print(name,age) foo('egon',18) foo(18,'egon') foo(age=18,name='egon') foo('egon',age=18)
# 三 默認參數(shù)
#默認參數(shù):指的是在定義函數(shù)階段,就已經(jīng)為某個形參賦值了,改形參稱之為有默認值的形參,簡稱默認形參
#注意:
#1. 在定義階段就已經(jīng)被賦值,意味著在調(diào)用階段可以不用為其賦值
#2. 位置形參應(yīng)該放到默認形參前面
#3. 默認參數(shù)的值在函數(shù)定義階段就已經(jīng)固定死了
#4. 默認參數(shù)的值通常應(yīng)該是不可變類型
def foo(x,y=2): print(x,y) foo(1) foo(1,3) foo(y=3,x=1) ---------------------------- 1 2 1 3 1 3
-
m=10 ## 必須要放在上面才可以被賦值到 def foo(x,y=m): print(x,y) m=20 #定義時不能定義在函數(shù)后面,否則會報 m 沒有定義 foo(1) ------------------------- 1 10
def register(name,hobby,l=[]): l.append(hobby) print('%s 的愛好為 %s' %(name,l)) register('yxx','不洗澡') register('egon','read') ----------------------------- yxx 的愛好為 ['不洗澡'] egon 的愛好為 ['不洗澡', 'read'] def register(name, hobby, l=None): if l is None: l=[] l.append(hobby) print('%s 的愛好為 %s' % (name, l)) register('yxx', '不洗澡',[]) register('egon', 'read',[]) -------------------------------------------------- yxx 的愛好為 ['不洗澡'] egon 的愛好為 ['read']
# 位置形參vs默認形參
# 對于大多情況下傳的值都不相同的,應(yīng)該定義成位置形參
# 對于大多情況下傳的值都相同的,應(yīng)該定義成默認形參
def register(name,age,sex='男'): print(name,age,sex) register('李鐵蛋',18,) register('劉二丫',19,'女')
# 四 可變長度的參數(shù)
# 站在實參的角度,參數(shù)長度可變指的是在調(diào)用函數(shù)時,傳入的實參值的個數(shù)不固定
#而實參的定義方式無法兩種:位置實參,關(guān)鍵字實參,對應(yīng)著形參也必須有兩種解決方案*與**,類分別應(yīng)對溢出的位置實參與關(guān)鍵字實參
#1. 在形參中帶*:會將調(diào)用函數(shù)時溢出位置實參保存成元組的形式,然后賦值*后的變量名
def foo(x,y,*z): #z=(3,4,5,6) print(x,y,z) foo(1,2,3,4,5,6)
# 2. 在實參中帶*: 但凡在實參中帶*星的,在傳值前都先將其打散成位置實參,再進行賦值
def foo(x,y,*z): #z=(3,4,5,6) print(x,y,z) foo(1,*[2,3,4,5,6]) # foo(1,2,3,4,5,6) # def foo(x,y,z): print(x,y,z) foo(*(1,2,3)) #foo(1,2,3) foo(*'abc') #foo('a','b','c')
# 3. 在形參中帶**:會將調(diào)用函數(shù)時溢出關(guān)鍵字實參保存成字典的形式,然后賦值**后的變量名
def foo(x,y,**z): #z={'z':3,'a':1,'b':2} print(x,y,z) foo(1,y=2,a=1,b=2,c=3) foo(1,2,**{"r":4,'g':9}) # 正確的 ------------------------------------------ 1 2 {'a': 1, 'b': 2, 'c': 3} 1 2 {'r': 4, 'g': 9} # 錯誤方式: # foo(1,2,{"r":4,'g':9}) # 錯誤的 #不能直接接收以字典的形式,可以是以關(guān)鍵字傳入例如:(a=1,b=2),或是將字典的形式打散 例如: **{"a":1,'b':2}
# 4. 在實參中帶**: 但凡在實參中帶**星的,在傳值前都先將其打散成關(guān)鍵字實參,再進行賦值
def foo(x,y,**z): #z={'a':100,'b':200} print(x,y,z) foo(1,**{'a':100,'b':200,'y':111}) #foo(1,b=200,a=100,y=111) --------------------------- 1 111 {'a': 100, 'b': 200} def foo(x,y,z): print(x,y,z) foo(**{'y':111,'x':222,'z':333}) #foo(z=333,x=222,y=111) ------------------------------------ 222 111 333
#5. 規(guī)范: 在形參中帶*與**的,*后的變量名應(yīng)該為args,**后跟的變量名應(yīng)該時kwargs
def foo(*args,**kwargs): #args=(1,2,3,4,5) kwargs={'a':1,'b':2,'c':3} print(args) print(kwargs) foo(1,2,3,4,5,a=1,b=2,c=3) ------------------------------------ (1, 2, 3, 4, 5) {'a': 1, 'b': 2, 'c': 3}
注意:
!!!!!!!!!!!當(dāng)我們想要將傳給一個函數(shù)的參數(shù)格式原方不動地轉(zhuǎn)嫁給其內(nèi)部的一個函數(shù),應(yīng)該使用下面這種形式
def bar(x,y,z): print(x,y,z) def wrapper(*args,**kwargs): #args=(1,2) kwargs={'z':3} bar(*args,**kwargs) #bar(*(1,2),**{'z':3}) #bar(1,2,z=3) wrapper(1,2,z=3) # 雖然調(diào)用的是wrapper,但是要遵循的確是bar的參數(shù)標準 --------------------------------- 1 2 3
五 命名關(guān)鍵字參數(shù): 放到*與**之間的參數(shù)稱之為命名關(guān)鍵字參數(shù)
# 注意: 命名關(guān)鍵字參數(shù)必須按照key=value的形式傳值
def foo(x,y,*args,m,n,**kwargs): #args=(3,4,5,6,7,8) print(x,y) # 1,2 print(args) #(3,4,5,6,7,8) print(m,n) #222,333 print(kwargs) foo(1,2,3,4,5,6,7,8,n=333,m=222,a=1,b=2) -------------------------------- 1 2 (3, 4, 5, 6, 7, 8) 222 333 {'a': 1, 'b': 2} def foo(*,x=1,y): print(x) print(y) foo(y=2222,x=1111) foo(y=2222) ----------------------------------- 1111 2222 1 2222 def foo(x,y=1,*args,m,**kwargs): print(x) print(y) print(args) print(m) print(kwargs) foo('from x',ars='tuple',m='from m',kw='from kw',ar='args') ----------------------------------------- from x 1 () from m {'ars': 'tuple', 'kw': 'from kw', 'ar': 'args'}
作業(yè):
默寫: 函數(shù)中參數(shù)的分類 及其作用 位置 關(guān)鍵字 形參 實參 可變長度參數(shù) 分類:形參,實參 作用: 位置:位置形參,位置實參 關(guān)鍵字:關(guān)鍵字實參: 在調(diào)用函數(shù)階段,按照key=value的形式指名道姓地為形參傳值 形參:指的是在定義函數(shù)階段括號內(nèi)指定變量名,即形參本質(zhì)就是"變量名" 實參:指的是在調(diào)用函數(shù)階段括號內(nèi)傳入的值,即實參本質(zhì)就是"值" 可變長度參數(shù): 站在實參的角度,參數(shù)長度可變指的是在調(diào)用函數(shù)時,傳入的實參值的個數(shù)不固定,而實參的定義方式無法兩種:位置實參,關(guān)鍵字實參,對應(yīng)著形參也必須有兩種解決方案*與**,類分別應(yīng)對溢出的位置實參與關(guān)鍵字實參 練習(xí)題: 1.使用函數(shù)新的知識點繼續(xù)完善,優(yōu)化購物車 2.使用函數(shù)完成以下功能,數(shù)據(jù)格式如下 [ {“name”:”張無忌”,”number”,”sh01”,”math”:90,”english”:87,”chinese”:56}, {“name”:”武則天”,”number”,”sh02”,”math”:40,”english”:97,”chinese”:67}.... ] 提供以下功能函數(shù) 獲取指定學(xué)生的成績 獲取指定學(xué)號的成績 根據(jù)學(xué)生的學(xué)號修改姓名 根據(jù)姓名修改指定學(xué)科的成績 刪除指定學(xué)生及其成績 3.博客作業(yè) http://www.cnblogs.com/linhaifeng/articles/7531972.html#_label5 拓展: ATM 參考博客
六、函數(shù)對像
1、函數(shù)是第一類對象: 指的是函數(shù)名指向的值(函數(shù))可以被當(dāng)作數(shù)據(jù)去使用
def func(): # func=函數(shù)的內(nèi)地址 print('from func') print(func) # 打印出 func=函數(shù)的內(nèi)地址 # 1. 可以被引用 age=10 x=age print(x,age) f=func print(f) f() # 2. 可以當(dāng)作參數(shù)傳給另外一個函數(shù) def bar(x): print(x) bar(age) bar(func) # 3. 可以當(dāng)作一個函數(shù)的返回值 def bar(x): return x res=bar(age) print(res) res=bar(func) print(res) # 4. 可以當(dāng)作容器類型的元素 l=[age,func,func()] print(l)
-------------------------------------------------------------------------------------------------------------------------------------------
def login(): print('login') def register(): print('register') def shopping(): print('shopping') def pay(): print('pay') def transfer(): print('transfer') func_dic={ '1':login, '2':register, '3':shopping, '4':pay, '5':transfer } print(func_dic) msg=""" 0 退出 1 登陸 2 注冊 3 購物 4 支付 5 轉(zhuǎn)賬 """ while True: print(msg) choice=input('請輸入您的操作: ').strip() if choice == '0':break if choice == '1': login() elif choice == '2': register() elif choice == '3': shopping() elif choice == '4': pay() else: print('輸入錯誤指令,請重新輸入') if choice in func_dic: func_dic[choice]() else: print('輸入錯誤指令,請重新輸入') # 拆分: # print(func_dic["1"]()) # 或者 # f=func_dic["1"] # f()
七、函數(shù)嵌套
# 函數(shù)嵌套分為兩大類
# 一: 函數(shù)的嵌套調(diào)用:在調(diào)用一個函數(shù)過程中,其內(nèi)部代碼又調(diào)用了其他函數(shù)
def bar(): print('from bar') def foo(): print('from foo') bar() foo() -------------------------------------------------------------------- def max2(x,y): if x > y: return x elif x<y: return y else: return y == x # print(max2(3,3)) def max4(a,b,c,d): res1=max2(a,b) res2=max2(res1,c) res3=max2(res2,d) return res3 print(max4(1,2,3,4)
#二:函數(shù)的嵌套定義:一個函數(shù)內(nèi)部又定義了另外一個函數(shù)
def outter(): x=1 print('from outter') def inner(): print('from inner') print(x) print(inner) inner() outter() ------------------------------------------------------------ from outter 1 <function outter.<locals>.inner at 0x000001E5234C5510> from inner
def f1(): print('from f1') def f2(): print('from f2') def f3(): print('from f3') f3() f2() f1() ------------------------------------------- from f1 from f2 from f3
from math import pi print(pi) def circle(radius,action=0): """ 圓形相關(guān)運算 :param radius: 半徑 :param action: 0代表求面積,1代表求周長 :return: 面積或者周長 """ def area(radius): return pi * (radius ** 2) def perimiter(radius): return 2 * pi * radius if action == 0: res=area(radius) elif action == 1: res=perimiter(radius) return res print(circle(10,0)) print(circle(10,1)) ----------------------------------------------- 3.141592653589793 314.1592653589793 62.83185307179586
八、名稱空間與作用域
1 什么是名稱空間namespace
名稱空間就是用來存放名字與值內(nèi)存地址綁定關(guān)系的地方(內(nèi)存空間)
age=18
但凡查找值一定要通過名字,訪問名字必需去查找名稱空間
2 名稱空間分為三大類
內(nèi)置名稱空間:存放的是python解釋器自帶的名字
例如:
len
max
print
全局名稱空間:存放的是文件級別的名字
例如:以下名字中x\y\z\b\foo都會存放于全局名稱空間中
x=1
y=2
if x == 1:
z=3
while True:
b=4
break
def foo():
m=3
局部名稱空間:在函數(shù)內(nèi)定義的名字
例如:
foo內(nèi)的m這個名字一定是存放于一個局部名稱空間中
生命周期:
內(nèi)置名稱空間:在解釋器啟動時則生效,解釋器關(guān)閉則失效
全局名稱空間:在解釋器解釋執(zhí)行python文件時則生效,文件執(zhí)行完畢后則失效
局部名稱空間:只在調(diào)用函數(shù)時臨時產(chǎn)生該函數(shù)的局部名稱空間,改函數(shù)調(diào)用完畢則失效
加載順序:
內(nèi)置->全局->局部
調(diào)用順序:(從當(dāng)前往外找,以下順序不變)
局部-> 全局-> 內(nèi)置
查找名字的順序:
基于當(dāng)前所在位置往上查找
假設(shè)當(dāng)前站在局部,查找順序:局部->全局->內(nèi)置
假設(shè)當(dāng)前站在全局,查找順序:全局->內(nèi)置
# 案列一:
len=111 def foo(): len=222 print(len) foo() print('站在全局找len: ',len) -------------------------------------- 222 站在全局找len: 111
x=111 def f1(): x=222 def f2(): def f3(): x=444 print(x) x=333 f3() f2() f1() -------------------------------- 444
# (******)名字的查找順序,在函數(shù)定義階段就已經(jīng)固定死了(即在檢測語法時就已經(jīng)確定了名字的查找順序),與函數(shù)的調(diào)用位置無關(guān),也就是說無論在任何地方調(diào)用函數(shù),都必須回到當(dāng)初定義函數(shù)的位置去確定名字的查找關(guān)系#
# 案列二:
x=111 def outer(): def inner(): print('from inner',x) # x訪問的是全局名稱空間中x return inner f=outer() print(f) x=222 # 因為代碼是從上往下讀,而在最后面的x=222時是因為先讀到x=111,后面再讀到x=222 所以最終取得的結(jié)果是 print('from inner',x) >>> from inner 222 f() --------------------------------------------------- <function outer.<locals>.inner at 0x00000204E1D45510> from inner 222
# 案列三:
x=111 def outer(): def inner(): print('from inner',x) # x訪問的時全局名稱空間中x return inner f=outer() # x=222 def func(): x=333 #與函數(shù)的調(diào)用位置無關(guān) f() x=444 func() ---------------------------------------------- from inner 444
# 案列四:
# 都不對 x=111 def outer(): def inner(): x=11111 # 先定義,后調(diào)用 print('from inner',x) # x是來自于當(dāng)前層的名字 ,能找到,但是先現(xiàn)定義,后調(diào)用 x=2222222222 # 語法錯誤, 而這里是x 沒有定義,后面再賦值,所以是語法錯誤 return inner f=outer() f()
# 作用域:
#域指的是范圍,作用域指的就是作用的范圍,分為兩種
# 全局作用域:包含的是內(nèi)置名稱空間與全局名稱空間中的名字
# 特點:全局有效,全局存活
# 局部作用域:包含的是局部名稱空間中的名字
# 特點:局部有效,臨時存活
x=1 def foo(): y=2 print(x) def bar(): print(x) foo() bar() ----------------------------- 1 1
# global,nonlocal
x=1 def foo(): x=2 foo() print(x) -------------------- 1
l=[] def foo(): l.append(1) # l=33333 foo() print(l) ------------------------------- Unbound Local Error #(錯誤的云地方)
#global:在局部聲明一個名字是來自于全局作用域的,可以用來在局部修改全局的不可變類型
x=1 def foo(): global x x=2 foo() print(x) --------------------------- 2
#nonlocal:聲明一個名字是來自于當(dāng)前層外一層作用域的,可以用來在局部修改外層函數(shù)的不可變類型
x=0 def f1(): x=111 def f2(): # global x nonlocal x x=222 f2() print(x) f1() print(x) ------------------------------ 222 0
九、閉包函數(shù)
1 什么是閉包函數(shù)
閉:指的是閉包函數(shù)是定義在一個函數(shù)內(nèi)部的函數(shù)
包:該內(nèi)部函數(shù)包含對外層函數(shù)作用域名字的引用
需要結(jié)合函數(shù)對象的概念將閉包函數(shù)返回到全局作用域去使用,從而打破函數(shù)的層級限制
def outter():
x=111
def inner():
print(x)
return inner
f=outter() #f=outter內(nèi)的inner
# x=22222
# f()
def func():
x=3333
f()
func()
2 為何要用閉包函數(shù)
閉包函數(shù)提供了一種為函數(shù)體傳值的解決方案
3 如何用閉包函數(shù)
# 為函數(shù)體傳值的方式一:參數(shù)
def func(x,y): print(x+y) func(1,2) ------------------- 3
# 為函數(shù)體傳值的方式二:閉包
def outter(x,y): # x=1 # y=2 def func(): print(x+y) return func f=outter(1,2) f() ------------------ 3
# 解決方案一:參數(shù)
# pip3 install requests
import requests def get(url): response=requests.get(url) if response.status_code == 200: print(len(response.text)) get('https://www.baidu.com') get('https://www.baidu.com') get('https://www.baidu.com') get('https://www.tmall.com') get('https://www.tmall.com') url1='https://www.baidu.com' url2='https://www.tmall.com' get(url1) get(url1) get(url1) get(url2) get(url2) get(url2)
# 解決方案二:閉包
import requests def outter(url): # url='https://www.baidu.com' def get(): response=requests.get(url) if response.status_code == 200: print(len(response.text)) return get baidu=outter('https://www.baidu.com') baidu() baidu() baidu() tmall=outter('https://www.tmall.com') tmall() tmall() tmall()
名稱欄目:六、函數(shù)的基本使用
鏈接分享:http://www.rwnh.cn/article20/psghjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、企業(yè)建站、品牌網(wǎng)站建設(shè)、定制網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(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)