ChatGLM部署、微調(diào)與開發(fā) 課件匯 08 大模型與知識圖譜 -15.基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)_第1頁
ChatGLM部署、微調(diào)與開發(fā) 課件匯 08 大模型與知識圖譜 -15.基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)_第2頁
ChatGLM部署、微調(diào)與開發(fā) 課件匯 08 大模型與知識圖譜 -15.基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)_第3頁
ChatGLM部署、微調(diào)與開發(fā) 課件匯 08 大模型與知識圖譜 -15.基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)_第4頁
ChatGLM部署、微調(diào)與開發(fā) 課件匯 08 大模型與知識圖譜 -15.基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)_第5頁
已閱讀5頁,還剩242頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第8章

大模型與知識圖譜知識圖譜增強大模型一大模型增強知識圖譜二大模型與知識圖譜協(xié)同三知識圖譜在大模型中應用四8.1知識圖譜增強大模型什么是知識圖譜?·定義:一種基于圖結構的知識表示方法,通過節(jié)點和邊來描述實體和實體之間的關系·優(yōu)勢:基于圖結構,支持深度復雜推理,具有強可解釋性·應用領域:搜索引擎、推薦系統(tǒng)、問答系統(tǒng)8.1知識圖譜增強大模型知識圖譜VS.大模型知識圖譜大模型知識圖譜能夠為通用大模型的工業(yè)化應用,彌補通用大模型語料里專業(yè)領域知識的不足??梢岳弥R圖譜在大模型中引入指定約束,適度控制內(nèi)容生成,提高大模型在行業(yè)應用場景中的適應能力。知識圖譜中的知識構建測試集,可對大模型的生成能力進行各方面的評估,降低事實性錯誤的發(fā)生概率。大模型可以利用語義理解和生成等能力抽取知識,提高知識抽取的準確性和蓋度,也可以抽取出隱含的、復雜的、多模態(tài)的知識,降低圖譜構建成本。大模型可以利用其語義理解和指令遵循等能力輔助知識圖譜的半自動化構建設計、增加知識的全面性和覆蓋度,協(xié)助更好的完成知識融合和更新。大模型可以輔助提升知識圖譜的輸出效果,生成更加合理、連貫、有創(chuàng)新性的內(nèi)容,例如文本、圖像、音頻等?;パa關系融合互補大模型擅長處理自然語言和模糊知識,而知識圖譜擅長表示結構化知識并進行推理。相互結合,可以充分發(fā)揮它們的優(yōu)勢,解決更復雜的問題?;哟竽P涂梢杂糜趶奈谋局刑崛≈R、從而擴展和豐富知識圖譜的內(nèi)容。知識圖譜可以為大模型提供結構化知識進行語義補充和生成引導。增強知識圖譜和大模型融合可以相互增強各自的能力。知識圖譜可以提高大模型的語義理解和準確性,而大模型可以為知識圖譜提供更豐富的語言知識和生成能力。大模型與知識圖譜如何融合?——技術路徑8.1知識圖譜增強大模型LLM賦能KG數(shù)據(jù)標注知識抽取知識建模表示學習知識補全圖譜構建…KG賦能LLM增強預訓練增強微調(diào)增強推理能力增強可解釋性...知識圖譜增強大模型預訓練8.1知識圖譜增強大模型1)利用知識圖譜增強大模型預訓練使用圖結構將知識圖譜信息注入到大模型的輸入中,增強大模型預訓練能力;通過附加的融合模塊將知識圖譜注入到大模型,在預訓練模型中,可以設計額外的輔助任務,然后通過輔助任務對預訓練模型加約束來增強大模型預訓練能力;知識圖譜的鏈式關系輸入到大模型中,作為大模型的預訓練語料。知識圖譜增強大模型微調(diào)8.1知識圖譜增強大模型2)利用知識圖譜增強大模型的監(jiān)督微調(diào)/對齊微調(diào)通過指令微調(diào)訓練和基于知識圖譜反饋的強化學習;?通過文本-知識對齊將知識圖譜信息注入到大模型的訓練目標中,增強大模型預訓練能力。三類主流微調(diào)方法:知識提示范式微調(diào)本體提示范式微調(diào)知識圖譜結構微調(diào)知識圖譜增強大模型推理8.1知識圖譜增強大模型3)用知識圖譜增強大模型的常識和領域知識推理能力把知識圖譜當作一個準確的知識庫,作為一個外部檢索的知識源,提升常識和領域知識方面的推理能力;利用知識圖譜的多跳路徑作為大模型的輸入,提升模型專業(yè)性、可信性、真實性與可解釋性;使用知識模型根據(jù)問題生成知識陳述;兩個主要方法:基于檢索增強的知識融合基于知識圖譜的提示知識圖譜增強大模型可解釋性8.1知識圖譜增強大模型4)用知識圖譜增強大模型推理的可解釋性通過動態(tài)知識圖譜融合增強大模型的推理能力,從知識圖譜中較容易地獲得一系列規(guī)則,既從數(shù)據(jù)中總結得出的特征子圖,作為COT、TOT的指令。通過檢索增強知識融合增強大模型的推理能力,知識圖譜是典型的圖結構,有大量的路徑。借助這種鏈式關系可提升大模型推理的可解釋性。使用知識模型根據(jù)問題生成知識陳述;利用大語言模型對基于知識圖譜生成的問題進行預測,驗證大模型的可解釋性。第8章

大模型與知識圖譜知識圖譜增強大模型一大模型增強知識圖譜二大模型與知識圖譜協(xié)同三知識圖譜在大模型中應用四大模型增強知識圖譜8.2大模型增強知識圖譜1)用大模型增強數(shù)據(jù)標注利用大模型對原始數(shù)據(jù)進行實體、關系、事件等標注。2)用大模型增強知識抽取利用大模型進行實體抽取、關系抽取、事件抽取、因果關系抽取等,例如:DeepKE-LLM。3)用大模型增強知識建模4)用大模型增強知識圖譜嵌入與表示學習5)用大模型增強知識圖譜補全6)用大模型增強知識圖譜構建利用大模型進行實體類型提取、關系類型提取、事件類型提取、知識體系提取等。利用大模型作為知識圖譜嵌入的文本和圖結構編碼器,解決結構連通性有限的問題,提升知識抽取的能力。利用大模型作為編碼器或生成器來補全知識圖譜數(shù)據(jù),提升知識補全的能力。利用大模型開展實體發(fā)現(xiàn)、共指解析和關系提取,構建特定領域內(nèi)的知識圖譜結構。采用知識蒸餾等技術實現(xiàn)端到端的圖譜構建大模型增強知識圖譜8.2大模型增強知識圖譜7)用大模型增強知識圖譜文本生成利用大模型自然語言理解方面的優(yōu)勢能夠提升從知識圖譜中生成文本的質(zhì)量,提高語言的準確性和在現(xiàn)實場景中的可用性。用大模型抽取自然語言問題中的實體、關系,進入結構化的知識圖譜尋找問題答案,再通過大模型組合答案并結合大模型自身的知識廣度將更充實的答案以自然語言的方式輸出,增強知識圖譜問答的廣度、自然性和準確性。大模型在其中扮演的角色:a.實體/關系抽取器b.答案推理器8)用大模型增強知識圖譜問答第8章

大模型與知識圖譜知識圖譜增強大模型一大模型增強知識圖譜二大模型與知識圖譜協(xié)同三知識圖譜在大模型中應用四大模型與知識圖譜統(tǒng)一構建技術框架8.3大模型與知識圖譜協(xié)同數(shù)據(jù)層:a.大模型處理文本數(shù)據(jù)b.知識圖譜處理結構化數(shù)據(jù)c.框架可擴展至多模態(tài)數(shù)據(jù),如視頻、音頻、圖像協(xié)同模型層:大模型和知識圖譜協(xié)同工作,提升各自能力技術層:融合大模型和知識圖譜的相關技術,以增強框架性能應用層:繼承大模型和知識圖譜,解決顯示問題。應用領域包括搜索引擎、推薦系統(tǒng)和AI助手大模型與知識圖譜協(xié)同知識表示8.3大模型與知識圖譜協(xié)同知識互補性:文本語料庫包含隱式和非結構化的知識;知識圖譜包含顯示和結構化的知識協(xié)同模型目標:設計模型以有效結合和表示兩種知識源。提升模型對知識的理解和下游任務的性能。實現(xiàn)方法:引入知識圖譜融合模塊與大模型共同訓練;采用文本-知識對偶編碼器架構;效果增強:通過統(tǒng)一表征大模型和知識圖譜的知識,提高準確性。大模型與知識圖譜協(xié)同推理8.3大模型與知識圖譜協(xié)同串行推理技術并行推理技術知識融合:采用雙編碼器架構,使用獨立的大模型和知識圖譜編碼器分別處理文本和結構化知識;Agent交互:大模型作為Agent與知識圖譜交互,進行知識推理。推理方式:串行推理:先通過知識圖譜結構化信息,再由大模型進行預測;并行推理:大模型與知識圖譜同時工作,動態(tài)協(xié)同推理并融合答案增強效果:串行推理提高預測準確性并行推理拓展知識邊界并增強推理結果的準確性第8章

大模型與知識圖譜知識圖譜增強大模型一大模型增強知識圖譜二大模型與知識圖譜協(xié)同三知識圖譜在大模型中應用四知識圖譜在大模型中應用8.4知識圖譜在大模型中應用如前所述“基于知識圖譜的提示”方法屬于知識圖譜增強大模型推理的一類子方法,旨在通過檢索圖數(shù)據(jù)庫中的知識圖譜事實三元組來擴展大模型的知識范圍,提高大模型推理的準確性和可靠性,降低大模型的“幻覺”性。用戶輸入實體識別三元組檢索Prompt構建執(zhí)行問答基于知識圖譜提示方法的基本范式本書案例FQA——電影客服智能體8.4知識圖譜在大模型中應用本書的案例——“基于GLM智能體虛擬角色養(yǎng)成系統(tǒng)(GLM-basedAgentSystemforVirtualRoleCultivation,GAS)”,是一個由GLM大模型驅(qū)動的人設生成以及智能對話系統(tǒng),允許用戶自行創(chuàng)建個性化虛擬角色,并與其進行相應領域的對話。這里,為了進一步說明“基于知識圖譜的提示”方法基本范式的具體實施方式,本書在GAS系統(tǒng)中專門設立了一個特定的虛擬角色:“電影客服智能體(FilmQueryingAgent,簡稱FQA)”,以用來專門回答用戶提出的與電影相關的問題,相當于一個“電影知識科普咨詢?nèi)藛T”。FQA的具體技術路線Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.1Python基本概念Python中的變量1.動態(tài)類型:Python不要求在聲明變量時指定數(shù)據(jù)類型,類型會在變量賦值時自動確定。2.類型靈活:同一變量可存儲不同類型的數(shù)據(jù),如整數(shù)、浮點數(shù)、字符串、列表、字典等。3.賦值操作:變量與數(shù)據(jù)的綁定通過賦值操作實現(xiàn),如x=2將整數(shù)2賦值給變量x。4.無需顯式聲明:在Python中,變量在使用前無需顯式聲明類型,直接賦值即可使用。9.1Python基本概念Python中的數(shù)據(jù)類型數(shù)據(jù)類型類別數(shù)據(jù)類型描述例子數(shù)字類型整型(int)表示整數(shù),包括正整數(shù)、負整數(shù)和零。int_example=10浮點型(float)表示小數(shù)或浮點數(shù),可以有小數(shù)點。float_example=3.14復數(shù)型(complex)表示復數(shù),包含實數(shù)部分和虛數(shù)部分。complex_example=2+3j序列類型字符串(str)表示文本,可以是字母、數(shù)字、符號等字符的序列。str_example='hello'列表(list)表示有序的元素集合,元素可以是不同類型,且可變。list_example=[1,"a",3.14]元組(tuple)表示不可變的有序元素集合。tuple_example=(1,"a",3.14)映射類型字典(dict)表示鍵值對的集合,鍵必須是不可變類型,且唯一。dict_example={'name':'John','age':30}集合類型集合(set)表示無序且元素唯一的集合,可變。set_example={1,2,3}凍結集合(frozenset)表示不可變的集合類型。frozenset_example=frozenset([1,2,3])布爾類型布爾(bool)表示邏輯值,只有True和False兩種值。9.1Python基本概念操作符與表達式——算術運算符類別操作符描述例子結果算數(shù)運算符+加法3+47-減法3-4-1*乘法3*412/除法4/22.0//整除5//22%取模(余數(shù))5%21**冪運算2**389.1Python基本概念操作符與表達式——比較運算符類別操作符描述例子結果比較運算符==等于3==3True!=不等于3!=3False>大于3>2True<小于2<3True>=大于等于3>=3True<=小于等于2<=3True9.1Python基本概念操作符與表達式——邏輯運算符類別操作符描述例子結果邏輯運算符and邏輯與TrueandTrueTrueor邏輯或TrueorFalseTruenot邏輯非notTrueFalse9.1Python基本概念操作符與表達式——賦值運算符類別操作符描述例子賦值運算符=簡單賦值a=3+=復合賦值(加法)a+=1-=復合賦值(減法)a-=1*=復合賦值(乘法)a*=2/=復合賦值(除法)a/=2//=復合賦值(整除)a//=2%=復合賦值(取模)a%=2**=復合賦值(冪運算)a**=29.1Python基本概念操作符與表達式——位運算符類別操作符描述例子結果位運算符&按位與6&52|按位或6|57^按位異或6^53~按位取反~6-7<<左移6<<112>>右移6>>139.1Python基本概念操作符與表達式——成員運算符、身份運算符類別操作符描述例子結果成員運算符in是否存在于序列中'apple'in['banana','apple','orange']Truenotin是否不存在于序列中'banana'notin['banana','apple','orange']False身份運算符is是否為同一對象aisb根據(jù)實際情況isnot是否不為同一對象aisnotb根據(jù)實際情況9.1Python基本概念控制流語句——條件語句if…elif…elseif條件1:#條件1為真時執(zhí)行的代碼elif條件2:#條件1不為真,條件2為真時執(zhí)行的代碼else:#上述條件都不為真時執(zhí)行的代碼9.1Python基本概念控制流語句——循環(huán)語句for循環(huán)for變量in序列:#對序列中的每個元素執(zhí)行的代碼【例9-2】for循環(huán)用法#定義一個包含多個元素的列表fruits=["apple","banana","cherry","date"]forfruitinfruits:#打印每個水果的名字print(fruit)9.1Python基本概念控制流語句——循環(huán)語句while循環(huán)while條件:#條件為真時不斷執(zhí)行的代碼#定義一個變量,用于存儲用戶輸入的數(shù)字number=0#使用while循環(huán),只要number小于10,就會不斷執(zhí)行循環(huán)體whilenumber<10:#打印當前的number值print(number)#將number增加1,以便在下一次循環(huán)中打印下一個數(shù)字number+=19.1Python基本概念控制流語句——循環(huán)控制語句、異常處理語句循環(huán)控制語句繼續(xù)(break):立即退出循環(huán)體。循環(huán)迭代(next):跳過當前循環(huán)的剩余代碼,繼續(xù)下一次循環(huán)。返回(return):退出循環(huán)并從包含循環(huán)的函數(shù)中返回。異常處理語句try:#嘗試執(zhí)行的代碼except異常類型:#出現(xiàn)特定異常時執(zhí)行的代碼finally:#無論是否出現(xiàn)異常都會執(zhí)行的代碼Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.2Python數(shù)據(jù)結構列表(List)Python中的列表(List)是一種可變的序列類型,它可以包含任意類型的元素,包括數(shù)字、字符串、其他列表等。列表是非常靈活的數(shù)據(jù)結構,支持多種操作和方法。常用的列表操作如下:類別操作符描述類別操作符描述創(chuàng)建列表創(chuàng)建一個包含元素的列表my_list=[1,2,3,4,5]切片獲取列表的一部分sub_list=my_list[1:3]訪問元素通過索引訪問列表中的元素print(my_list[0])遍歷遍歷列表中的每個元素foriteminmy_list:print(item)修改元素通過索引修改列表中的元素my_list[0]=100長度獲取列表的長度length=len(my_list)添加元素在列表末尾或指定位置添加元素my_list.append(6)my_list.insert(1,200)排序?qū)α斜磉M行排序numbers.sort()

numbers.sort(reverse=True)刪除元素刪除列表中的元素delmy_list[0]my_list.remove(200)

popped_element=my_list.pop()推導式根據(jù)某個規(guī)則創(chuàng)建新列表squares=[x**2forxinrange(10)]9.2Python數(shù)據(jù)結構元組(Tuple)元組與列表一樣,同樣是序列,但是不同于列表的是元組是不允許修改的。元組通常用圓括號()括起。以下是元組的基礎操作:類別操作符描述創(chuàng)建元組創(chuàng)建一個包含元素的元組my_tuple=(1,2,3,4,5)訪問元素通過索引訪問元組中的元素print(my_tuple[1:3])9.2Python數(shù)據(jù)結構字典(Dict)Python中的字典(Dictionary)是一種集合類型,它存儲鍵值對。字典是一種非常靈活的數(shù)據(jù)結構,可以用來存儲鍵值對,其中每個鍵都映射到一個值。字典中的鍵必須是唯一的,而且必須是不可變的數(shù)據(jù)類型,比如數(shù)字、字符串或元組。值可以是任何數(shù)據(jù)類型,包括數(shù)字、字符串、列表、字典等。類別操作符描述類別操作符描述創(chuàng)建字典創(chuàng)建一個包含鍵值對的字典my_dict={'name':'Alice','age':25}檢查鍵存在檢查鍵是否存在于字典中if'name'inmy_dict:print("Keyexists.")訪問元素通過鍵訪問字典中的值print(my_dict['name'])遍歷遍歷字典中的鍵值對forkey,valueinmy_dict.items():print(f"Key:{key},Value:{value}")修改元素修改字典中的值my_dict['age']=30長度獲取字典中的鍵值對數(shù)量print(len(my_dict))刪除元素刪除字典中的鍵值對delmy_dict['age']9.2Python數(shù)據(jù)結構集合(Set)Python中的集合(Set)是一種無序的、不包含重復元素的數(shù)據(jù)結構。集合是由花括號`{}`或`set()`函數(shù)創(chuàng)建的,它們用于存儲任何類型的唯一元素。集合是可變的,這意味著可以添加或刪除元素。類別操作符描述創(chuàng)建集合創(chuàng)建一個包含元素的集合my_set={1,2,3,4,5}添加元素向集合中添加元素my_set.add(6)my_set.update([7,8,9])刪除元素從集合中刪除元素my_set.remove(6)my_set.discard(10)my_set.pop()集合操作并集、交集、差集、對稱差集A={1,2,3}B={3,4,5}print(A|B)#集合的并集print(A&B)#集合的交集print(A-B)#集合的差集(A中有,B中沒有的元素)print(A^B)#集合的對稱差集(A和B中有,但不在兩者共同集合中的元素)檢查元素存在檢查元素是否存在于集合中if1inmy_set:print("1isintheset.")Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.3函數(shù)與模塊函數(shù)定義在Python中,定義和調(diào)用函數(shù)是編程的基礎。函數(shù)是一段可以重復使用的代碼塊,它用于執(zhí)行一個特定的任務。下面是定義和調(diào)用函數(shù)的基本步驟。def

my_function(param1,param2):

#定義一個函數(shù),它接受兩個參數(shù)

#在這里編寫函數(shù)體

returnresult

#如果函數(shù)有返回值,使用return語句返回函數(shù)定義的基本組成部分:-`def`關鍵字:用于聲明一個函數(shù)。-函數(shù)名:應遵循標識符的命名規(guī)則,以字母或下劃線開頭,后面可以跟字母、數(shù)字或下劃線。-參數(shù)列表:圓括號內(nèi)可以是零個、一個或多個參數(shù),參數(shù)之間用逗號分隔。-冒號`:`:用于開始函數(shù)定義塊。-函數(shù)體:縮進的代碼塊,用于實現(xiàn)函數(shù)的功能。-`return`語句:可選,用于從函數(shù)中返回值。9.3函數(shù)與模塊函數(shù)調(diào)用調(diào)用函數(shù)時,需要在函數(shù)名后面加上括號,并在括號內(nèi)提供所需的參數(shù)。參數(shù)的順序應與函數(shù)定義時指定的參數(shù)順序一致。my_function(arg1,arg2)#調(diào)用函數(shù),并傳入?yún)?shù)函數(shù)代碼示例:#定義函數(shù)defgreet(name,message):returnf"{message},{name}!"#調(diào)用函數(shù)greeting=greet("Alice","Hello")print(greeting)#輸出:Hello,Alice!9.3函數(shù)與模塊函數(shù)參數(shù)函數(shù)參數(shù)是指在定義函數(shù)時用于接收外部傳入值的變量。參數(shù)允許函數(shù)根據(jù)不同的輸入執(zhí)行不同的操作。參數(shù)類型描述語法示例代碼示例解釋默認參數(shù)為參數(shù)指定默認值,若調(diào)用時未提供,則使用默認值deffunction_name(param1=default_value):defgreet(name,message="Hello"):

returnf"{message},{name}!"如果調(diào)用

greet("Alice"),輸出為"Hello,Alice!"可變參數(shù)允許傳入任意數(shù)量的參數(shù)deffunction_name(*args):defsum_all(*args):

returnsum(args)調(diào)用

sum_all(1,2,3,4,5),輸出為15關鍵字參數(shù)通過名稱傳遞參數(shù),允許傳入任意數(shù)量的命名參數(shù)deffunction_name(**kwargs):defgreet(name,message="Hello"):

returnf"{message},{name}!"調(diào)用

greet(name="Alice",message="Hi"),輸出為"Hi,Alice!"9.3函數(shù)與模塊函數(shù)返回值函數(shù)可以通過`return`語句返回一個或多個值。返回值可以是任何數(shù)據(jù)類型,包括數(shù)字、字符串、列表、字典等。返回一個值返回多個值defadd(a,b):returna+b#調(diào)用函數(shù)并接收返回值result=add(3,4)print(result)#輸出:7#函數(shù)可以有多個返回值,這時可以使用元組來接收:defsplit(string):returnstring[0],string[1:]#調(diào)用函數(shù)并接收兩個返回值first,rest=split("hello")print(first)#輸出:'h'print(rest)#輸出:'ello'9.3函數(shù)與模塊模塊的導入與使用Python模塊是一個包含Python定義和語句的文件。模塊可以定義函數(shù)、類和變量,也可以包含可執(zhí)行的代碼。模塊讓程序員能夠邏輯地組織自己的Python代碼段。把相關的代碼分配到一個模塊里能讓代碼更好用,更易懂。模塊也可以定義可重用的函數(shù)和變量。導入模塊使用模塊模塊的搜索路徑創(chuàng)建自己的模塊importmath#導入某個特定模塊frommathimportsqrt#導入模塊中的特定元素frommathimport*#導入模塊中所有的元素(不推薦)importmathasm#導入模塊并給它一個別名result=math.sqrt(9)#使用導入的整個模塊result=sqrt(9)#使用特定導入的元素result=m.sqrt(9)#使用別名訪問模塊元素importsysprint(sys.path)#mymodule.pydefgreeting(name):return"Hello,{name}!"person="JohnDoe"#然后,可以像導入其他模塊一樣導入`mymodule`。importmymoduleprint(mymodule.greeting("Alice"))print(mymodule.person)Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.4面向?qū)ο缶幊填惻c對象Python是一種面向?qū)ο蟮木幊陶Z言。這意味著它允許開發(fā)者使用面向?qū)ο蟮木幊?OOP)范式來設計軟件。在面向?qū)ο缶幊讨?,我們將現(xiàn)實世界的實體抽象為程序中的對象,這些對象具有屬性(稱為字段)和行為(稱為方法)。概念描述示例代碼類(Class)定義對象的藍圖,包括屬性和方法classMyClass:def__init__(self,value):#構造函數(shù)self.my_attribute=value#實例屬性defmy_method(self):#實例方法returnself.my_attribute對象(Object)對象是根據(jù)類定義創(chuàng)建的具體實體。每個對象都有自己的屬性和方法。#創(chuàng)建一個MyClass的實例my_object=MyClass(10)#訪問對象的屬性print(my_object.my_attribute)#輸出:10#調(diào)用對象的方法print(my_object.my_method())#輸出:109.4面向?qū)ο缶幊汤^承與多態(tài)——繼承在面向?qū)ο缶幊讨?,繼承和多態(tài)是兩個核心概念。概念描述示例代碼繼承(Inheritance)1.子類繼承父類的屬性和方法;2.子類可以添加新的屬性和方法,也可以覆蓋父類的方法;3.如果一個類沒有顯式地指定父類,那么它默認繼承自object類,這是Python中的所有類的基類。classParent:def__init__(self):self.value="InsideParent"defshow(self):print(self.value)classChild(Parent):def__init__(self):super().__init__()#調(diào)用父類的構造函數(shù)self.value="InsideChild"#創(chuàng)建子類的實例child_obj=Child()#調(diào)用子類的方法,這會調(diào)用父類中被覆蓋的方法child_obj.show()#輸出:"InsideChild"9.4面向?qū)ο缶幊汤^承與多態(tài)——多態(tài)在面向?qū)ο缶幊讨校^承和多態(tài)是兩個核心概念。概念描述示例代碼多態(tài)(Polymorphism)同一方法在不同對象中有不同的實現(xiàn);在面向?qū)ο缶幊讨?,這意味著我們可以定義一些公共接口,然后讓不同的類以不同的方式實現(xiàn)這些接口。classAnimal:defspeak(self):raiseNotImplementedError("Subclassmustimplementthismethod")classDog(Animal):defspeak(self):return"Woof!"classCat(Animal):defspeak(self):return"Meow!"#多態(tài)示例defanimal_speak(animal):returnanimal.speak()dog=Dog()cat=Cat()print(animal_speak(dog))#輸出:"Woof!"print(animal_speak(cat))#輸出:"Meow!"9.4面向?qū)ο缶幊谭庋b與解耦——封裝封裝是面向?qū)ο缶幊?OOP)的一個核心原則,它指的是將數(shù)據(jù)和操作數(shù)據(jù)的方法捆綁在一起,形成一個對象。這樣做的主要目的是隱藏對象的內(nèi)部細節(jié),只暴露一個公共的接口。封裝可以防止外部直接訪問對象內(nèi)部的數(shù)據(jù)(即屬性),確保數(shù)據(jù)只能通過定義良好的接口(即方法)來訪問和修改。在Python中,封裝通常通過以下方式實現(xiàn):-將對象的屬性設置為私有(使用兩個下劃線前綴)或受保護的(使用一個下劃線前綴)。-提供公共的getter和setter方法來訪問和修改對象的屬性。9.4面向?qū)ο缶幊谭庋b與解耦——封裝實例classPerson:def__init__(self,name,age):self.__name=name#私有屬性self.__age=age#私有屬性#公共方法來獲取私有屬性defget_name(self):returnself.__namedefget_age(self):returnself.__age#公共方法來設置私有屬性defset_name(self,name):self.__name=namedefset_age(self,age):ifage>=0:self.__age=ageelse:raiseValueError("Agecannotbenegative")#使用Person類person=Person("Alice",30)print(person.get_name())#輸出:Aliceprint(person.get_age())#輸出:30person.set_name("Bob")person.set_age(25)在左側的例子中,`__name`和`__age`是私有屬性,不能直接從外部訪問。相反,我們提供了`get_name`、`get_age`、`set_name`和`set_age`這些公共方法來間接訪問和修改這些屬性。9.4面向?qū)ο缶幊谭庋b與解耦——解耦解耦是指減少或消除不同軟件模塊之間的依賴性。解耦的代碼更容易維護和擴展,因為它允許獨立地修改和替換系統(tǒng)的各個部分,而不影響其他部分。在Python中,解耦可以通過以下方式實現(xiàn):-使用接口或抽象基類來定義公共的合同,而不是直接依賴具體的實現(xiàn)。-使用依賴注入或工廠模式來創(chuàng)建對象,從而允許在運行時動態(tài)地替換依賴項。-使用事件和監(jiān)聽器模式來允許對象在不直接引用彼此的情況下進行通信。9.4面向?qū)ο缶幊谭庋b與解耦——解耦實例fromabcimportABC,abstractmethod#定義一個接口classAnimal(ABC):@abstractmethoddefmake_sound(self):pass#具體實現(xiàn)classDog(Animal):defmake_sound(self):return"Woof!"classCat(Animal):defmake_sound(self):return"Meow!"#使用接口而不是具體的類defanimal_sound(animal):returnanimal.make_sound()#創(chuàng)建具體的對象dog=Dog()cat=Cat()#調(diào)用函數(shù),傳入不同的對象print(animal_sound(dog))#輸出:Woof!print(animal_sound(cat))#輸出:Meow!在左側的例子中,`Animal`是一個接口,它定義了一個`make_sound`方法。`Dog`和`Cat`類實現(xiàn)了這個接口。`animal_sound`函數(shù)接受一個`Animal`類型的對象,并調(diào)用它的`make_sound`方法。這樣,`animal_sound`函數(shù)與任何具體的動物類解耦,只依賴于`Animal`接口。Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.5異常處理與調(diào)試什么是異常?即使語句或表達式使用了正確的語法,執(zhí)行時仍可能觸發(fā)錯誤。執(zhí)行時檢測到的錯誤稱為異常,異常不一定導致嚴重的后果。大多數(shù)異常不會被程序處理,而是顯示類似下列錯誤信息:發(fā)生異常:ZeroDivisionErrordivisionbyzeroFile"<stdin>",line1,in<module>print(1/0)ZeroDivisionError:divisionbyzero錯誤信息的最后一行說明程序遇到了什么類型的錯誤。異常有不同的類型,而類型名稱會作為錯誤信息的一部分中打印出來。9.5異常處理與調(diào)試異常類型類名描述Exception幾乎所有的異常類都是從它派生而來的AttributeError引用屬性或給它賦值失敗時引發(fā)OSError操作系統(tǒng)不能執(zhí)行指定的任務(如打開文件)時引發(fā),有多個子類IndexError使用序列中不存在的索引時引發(fā),為LookupError的子類KeyError使用映射中不存在的鍵時引發(fā),為LookupError的子類NameError找不到名稱(變量)時引發(fā)SyntaxError代碼不正確時引發(fā)TypeError將內(nèi)置操作或函數(shù)用于類型不正確的對象時引發(fā)ValueError將內(nèi)置操作或函數(shù)用于這樣的對象時引發(fā):其類型正確但包含的值不合適ZeroDivisionError在除法或求模運算的第二個參數(shù)為零時引發(fā)9.5異常處理與調(diào)試捕獲異常Python使用try-except語句實現(xiàn)異常捕獲,其基本語法格式如下:try:<語句塊1>except<異常類型>:<語句塊2><語句塊1>:嘗試執(zhí)行的代碼。<異常類型>:捕獲的異常類型。<語句塊2>:異常發(fā)生時執(zhí)行的代碼。異常處理流程:-執(zhí)行try子句中的代碼。-如果無異常,跳過except子句。-如果有異常,執(zhí)行匹配的except子句。-未匹配的異常會傳遞到外層try或?qū)е挛刺幚懋惓!?.5異常處理與調(diào)試同時處理多個異常、異常處理實例使用元組指定多個異常類型:try:<可能引發(fā)多種異常的代碼>except(RuntimeError,TypeError,NameError)ase:print(f"Anerroroccurred:{e}")【實例】除零錯誤:print(1/0)divisionbyzeroFile"division.py",line1,in<module>print(1/0)ZeroDivisionError:divisionbyzero【異常捕獲】:try:print(1/0)exceptZeroDivisionError:print("Youcan'tdividebyzero!")ZeroDivisionError:divisionbyzero9.5異常處理與調(diào)試自定義異常自定義異常允許開發(fā)者創(chuàng)建特定于應用程序的異常類。通過繼承Exception類來實現(xiàn)。自定義異常類的代碼類似于下面所示:classSomeCustomException(Exception):pass【實例】自定義異常:#定義一個自定義異常類,名為NegativeNumberExceptionclassNegativeNumberException(Exception):def__init__(self,number,message="負數(shù)不允許"):self.number=numberself.message=messagesuper().__init__(f"{self.message}:{self.number}")【實例】使用自定義異常:#使用自定義異常try:#假設我們有一個函數(shù),它不應該接受負數(shù)作為輸入defprocess_number(num):ifnum<0:raiseNegativeNumberException(num)#處理數(shù)字的邏輯pass#嘗試拋出異常process_number(-7)exceptNegativeNumberExceptionase:print(e)9.5異常處理與調(diào)試調(diào)試技巧與工具(了解)調(diào)試:軟件開發(fā)中識別和修復錯誤的過程;基本調(diào)試方法:print()、斷言assert調(diào)試器pdb:使用pdb,首先需要importpdb進行導入功能描述命令設置斷點在特定行設置斷點pdb.set_trace()

breakpoint()單步執(zhí)行逐行執(zhí)行代碼使用step命令或簡寫s繼續(xù)執(zhí)行繼續(xù)執(zhí)行直到下一個斷點或程序結束使用continue命令或簡寫c檢查變量查看當前變量的值使用print(variable)或簡寫p列出源碼顯示當前位置的源碼使用list命令或簡寫lPython基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.6I/O操作與文件處理文件讀寫對文件進行讀寫前,首先需要對文件使用open函數(shù)打開(open函數(shù)默認采用rt【文本只讀】模式),open()函數(shù)格式如下:open()函數(shù)的7種基本打開模式:文件的打開模式含義‘r’只讀模式,如果文件不存在,返回異常FileNotFoundError,默認值‘w’覆蓋寫模式,文件不存在則創(chuàng)建,存在則完全覆蓋‘x’創(chuàng)建寫模式,文件不存在則創(chuàng)建,存在則返回異常FileExistsError‘a(chǎn)’追加寫模式,文件不存在則創(chuàng)建,存在則在文件最后追加內(nèi)容‘b’二進制文件模式‘t’文本文件模式,默認值‘+’與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能9.6I/O操作與文件處理文件讀寫上述7種打開模式中,T、w、x、b可以和b、t、+組合使用,形成既表達讀寫又表達文件模式的方式。open函數(shù)默認采用rt(文本只讀)模式。通常情況下,文件是以textmode打開的,也就是說,從文件中讀寫字符串,這些字符串是以特定的encoding編碼的。如果沒有指定encoding,默認的是與平臺有關的。在處理文件對象時,最好使用with關鍵字。優(yōu)點是子句體結束后,文件會正確關閉,即便觸發(fā)異常也可以。如果沒有使用with關鍵字,則應調(diào)用f.close()關閉文件,即可釋放文件占用的系統(tǒng)資源。9.6I/O操作與文件處理文件操作函數(shù)——讀取函數(shù)與寫入函數(shù)讀取函數(shù):寫入函數(shù):操作方法含義<file>.readall0)讀入整個文件內(nèi)容,返回一個字符串或字節(jié)流*<file>.read(size=-1)從文件中讀入整個文件內(nèi)容,如果給出參數(shù),讀入前size長度的字節(jié)流<file>.readline(size=-1)從文件中讀入一行內(nèi)容,如果給出參數(shù),讀入該行前size長度的字符串或字節(jié)流<file>,readlines(hint=-1)從文件中讀入所有行,以每行為元素形成一個列表,如果給出參數(shù),讀入hint行操作方法含義<file>.readall0)讀入整個文件內(nèi)容,返回一個字符串或字節(jié)流<file>.read(size=-1)從文件中讀入整個文件內(nèi)容,如果給出參數(shù),讀入前size長度的字節(jié)流<file>.readline(size=-1)從文件中讀入一行內(nèi)容,如果給出參數(shù),讀入該行前size長度的字符串或字節(jié)流9.6I/O操作與文件處理文件操作函數(shù)——操作文件實例【實例】操作文件:importos#打開文件try:

withopen('example.txt','r',encoding='utf-8')asfile:

lines=file.readlines()

#讀取文件內(nèi)容到列表中,每次讀取一行

print("文件內(nèi)容如下:")

forlineinlines:

print(line.strip())

#使用strip()去除行尾的換行符

statinfo=os.stat('example.txt')

#獲取文件的狀態(tài)碼信息

print(f"文件大?。簕statinfo.st_size}字節(jié)")

print(f"最后修改時間:{statinfo.st_mtime}")

#文件已經(jīng)自動關閉exceptFileNotFoundError:

print("文件未找到,請檢查文件路徑是否正確。")exceptIOError:

print("讀取文件時發(fā)生錯誤。")【結果】:文件內(nèi)容如下:Hello,World!Thisisasecondline.文件大?。?9字節(jié)最后修改時間:1713583243.22449029.6I/O操作與文件處理文件操作函數(shù)——寫入文件實例【實例】操作文件:importostry:withopen('example33.txt','a',encoding='utf-8')asfile:#寫入多行內(nèi)容,并在每行后面添加換行符file.write('你好\n')file.write('好\n')file.write('呀\n')print("內(nèi)容加到文件中。")exceptIOErrorase:print(f"寫入文件時發(fā)生錯誤:{e}")9.6I/O操作與文件處理文本處理與正則表達式正則表達式是一種用于字符串搜索和操作的強大工具。通過re模塊提供,支持復雜的文本匹配和處理。常用的正則表達式:說明:反斜杠后面可以跟各種字符來表示各種特殊序列;它還用于轉(zhuǎn)義元字符,以便可以在表達式中匹配元字符本身。例如,如果需要匹配一個[或\,可以在其前面加上一個反斜杠來消除它們的特殊含義:\[或\\。表達式含義\d匹配任何十進制數(shù)字,等價于字符類[o-9]\D匹配任何非數(shù)字字符,等價于字符類[^0-9]\s匹配任何空白字符,等價于字符類[t\n\r\f\v]\S匹配任何非空白字符,等價于字符類[^\t\n\r\f\v]\w匹配任何字母與數(shù)字字符,等價于字符類[a-zA-Z0-9_]\W匹配任何非字母與數(shù)字字符,等價于字符類[^a-zA-Z0-9_]9.6I/O操作與文件處理文本處理與正則表達式常用模式對象方法:【實例】使用正則表達式匹配國內(nèi)手機號方法/屬性目的match()確定正則是否從字符串的開頭匹配search()掃描字符串,查找此正則匹配的任何位置findall()找到正則匹配的所有子字符串,并將它們作為列表返回finditer()找到正則匹配的所有子字符串,并將它們返回為一個iterator.pattern=pile(r"1[356789]\d{9}")strs='小明的手機號你明天打給他'result=pattern.findall(strs)print(result)運行結果為:[]Python基本概念一Python數(shù)據(jù)結構二函數(shù)與模塊三面向?qū)ο缶幊趟漠惓L幚砼c調(diào)試五I/O操作與文件處理六第9章Python語言基礎ChatGLM開發(fā)接口與實例七9.7ChatGLM開發(fā)接口與實例SDK接口和HTTP接口SDK接口與HTTP接口對比:特性/接口類型SDK接口(主要使用方式)HTTP接口定義軟件開發(fā)工具包,提供庫文件、代碼示例、文檔等基于HTTP協(xié)議,用于客戶端與服務器間的數(shù)據(jù)交換應用領域移動應用、網(wǎng)絡應用、游戲、企業(yè)軟件Web應用程序、RESTfulAPI、分布式系統(tǒng)優(yōu)勢簡化開發(fā)過程;

提高開發(fā)效率;標準化的接口;跨平臺兼容性;

訪問硬件功能;

網(wǎng)絡服務集成;GUI組件跨平臺兼容性;簡單性;靈活性;無狀態(tài)性;可緩存性;安全性(通過HTTPS)使用示例使用SDK接口首先需要使用pipinstallzhipuai命令安裝SDK包。提供了同步、異步、SSE三種調(diào)用方式。使用HTTP方法(GET、POST、PUT、DELETE等)進行資源操作請求參數(shù)依據(jù)SDK文檔,通常需要APIKey或Token需要"Content-Type"和"Authorization"等頭部信息數(shù)據(jù)交換通過SDK提供的函數(shù)和方法通過HTTP請求和響應體狀態(tài)管理通常由SDK內(nèi)部管理無狀態(tài),需客戶端或服務器管理狀態(tài)安全性依賴于SDK實現(xiàn)可通過HTTPS和SSL/TLS協(xié)議加密9.7ChatGLM開發(fā)接口與實例接口鑒權接口鑒權的定義:接口鑒權(InterfaceAuthentication)是指在計算機系統(tǒng)中,對調(diào)用接口的實體進行身份驗證的過程。這是確保只有擁有適當權限的實體才能訪問特定接口資源的一種安全措施。接口鑒權的關鍵步驟:步驟描述示例1.識別調(diào)用者確定嘗試訪問接口的實體的身份通過API密鑰、用戶名和密碼、數(shù)字證書等2.驗證憑據(jù)驗證提供的身份識別信息是否有效且未被篡改檢查APIKey與存儲的憑據(jù)是否匹配3.授權訪問確定實體是否有權限執(zhí)行請求的操作檢查用戶的角色、權限或訪問級別4.會話管理建立會話以跟蹤驗證用戶的狀態(tài)在后續(xù)請求中保持用戶狀態(tài)5.審計和記錄記錄鑒權嘗試的結果包括成功訪問、失敗嘗試和具體訪問信息9.7ChatGLM開發(fā)接口與實例SDK接口請求與接口鑒權——實例智譜AI已經(jīng)將接口鑒權封裝到SDK,使用時只需按照SDK調(diào)用示例填寫APIKey即可?!緦嵗縎DK接口請求【實例】結果輸出:步驟描述示例初始化客戶端創(chuàng)建ZhipuAI客戶端實例client=ZhipuAI(api_key="您的APIKey")發(fā)起請求調(diào)用特定模型并發(fā)送消息response=pletions.create(model="glm-4",messages=[{"role":"user","content":"你好!你叫什么名字"}],stream=True)處理響應遍歷響應并打印內(nèi)容forchunkinresponse:content=chunk.choices[0].delta.contentcontent_without_newline=content.strip()print(content_without_newline,end='')歡迎提問謝謝各位同學第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六第10章PythonWeb開發(fā)PythonWeb開發(fā)環(huán)境搭建七FastAPI框架八Web前端開發(fā)工具九Web服務器和部署十ChatGLMWeb應用開發(fā)實例十一一10.1.1Web定義Web是World

Wide

Web(全球廣域網(wǎng))的簡稱,也稱為WWW、3W或W3。Web(WorldWideWeb)即全球廣域網(wǎng),也稱為萬維網(wǎng),它是一種基于超文本和HTTP的、全球性的、動態(tài)交互的、跨平臺的分布式圖形信息系統(tǒng)。10.1.2Web起源1990年初期

蒂姆·伯納斯-李在CERN提出Web概念,旨在通過超文本鏈接共享科研文檔。1993年

伊利諾伊大學厄巴納-香檳分校的NCSA組織開發(fā)了第一個瀏覽器Mosaic。1994年NetscapeNavigator(網(wǎng)景瀏覽器)發(fā)布,標志著新一代瀏覽器的誕生。TimBerners-Lee創(chuàng)建W3C理事會,確立了Web標準的發(fā)展路徑。1995年JavaScript由BrendanEich發(fā)明,為動態(tài)Web內(nèi)容提供支持。1998年Ajax技術出現(xiàn),推動Web從靜態(tài)內(nèi)容向動態(tài)交互的轉(zhuǎn)變。JQuery等跨瀏覽器JavaScript工具庫的出現(xiàn),簡化了Web開發(fā)。Web的發(fā)展過程10.1.3Web的特點跨平臺:用戶可以使用各種不同的設備(如計算機、手機、平板電腦)訪問Web。多媒體支持:Web不僅支持文本內(nèi)容,還可以包含圖片、視頻、音頻等多種媒體類型。開放標準:Web的技術標準由W3C(萬維網(wǎng)聯(lián)盟)等組織制定,保證了不同平臺之間的互操作性和發(fā)展的穩(wěn)定性。分布式:Web是由分布在全球各地的服務器組成,用戶通過互聯(lián)網(wǎng)訪問這些服務器上的資源。10.1.4Web的工作原理1.客戶端(通常是Web瀏覽器)發(fā)送HTTP請求到服務器。2.服務器接收到請求后,處理請求并返回相應的資源,如HTML、CSS、JavaScript文件等。3.客戶端收到資源后,進行解析和渲染,最終呈現(xiàn)給用戶。10.1.5URL統(tǒng)一資源定位符定義:用于定位互聯(lián)網(wǎng)上的資源地址。唯一性:每個網(wǎng)頁具有唯一的URL?;菊Z法:統(tǒng)一的基本語法結構。示例:/URL的一般格式-協(xié)議類型(protocol):如http、https、ftp。-主機名(hostname):服務器的域名或IP地址。-端口號(port):默認或指定的端口。-路徑(path):主機上的目錄或文件地址。-參數(shù)(parameters):特殊參數(shù)的指定。-查詢(query):動態(tài)網(wǎng)頁的參數(shù)傳遞。-信息片斷(fragment):定位網(wǎng)絡資源中的特定部分。URL的特點10.1.6HTTP超文本傳輸協(xié)議定義:HTTP(超文本傳輸協(xié)議):一種用于傳輸超文本(如HTML)的協(xié)議,是Web通信的基礎。超文本傳輸協(xié)議可以進行文字分割:超文本(Hypertext)、傳輸(Transfer)、協(xié)議(Protocol)。第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六10.2.1HTML

HTML是一種超文本標記語言,用于描述網(wǎng)頁的結構和內(nèi)容信息。HTML的基本組成單位是標記,不同的標簽用于定義不同的文檔接口,如:段落、標題、圖像等。實例:10.2.1HTML標記作用<h1></h1>標題字標記,實際有h1到h6,h1等級最高<font></font>文本標記<b></b>和<strong></strong>加粗標記<i></i>,<em></em>,<cite></cite>斜體標記<sup></sup>上角標標記,如x5中的指數(shù)部分<sub></sub>下標標記,如a1中的下角標部分<p></p>段落標記,用于標注文本構成的一個段落<br>在不另起一段的前提下強制換行,該標簽單個出現(xiàn),無結束標志<nobr></nobr>強制不換行標記<hr>在頁面中展示一條水平線,該標簽單個出現(xiàn),無結束標志<img></img>圖像標記<ol></ol>有序列表標記,每一行會有一個序號<ul></ul>無序列表標記,無序號<li></li>列表項標記,用于<ol>或<ul>中,用于標記一行表項<table></table>表格標記<tr></tr>行標記<td></td>單元格標記HTML常用標記CSS(Cascading

Style

Sheet,層疊樣式表)是一種樣式表語言,它允許開發(fā)者對網(wǎng)頁的布局、顏色、字體以及其他視覺要素進行控制,并能實現(xiàn)內(nèi)容與表現(xiàn)形式分離。CSS將HTML文檔從內(nèi)容中解耦,使得開發(fā)者能夠更好地控制頁面的外觀和樣式。10.2.2CSSCSS的語法結構

在HTML樣式中有4種CSS引用方式,分別為:行內(nèi)樣式(行間樣式、內(nèi)聯(lián)樣式、行嵌樣式)、內(nèi)部樣式、鏈入外部樣式、導入外部樣式。10.2.2CSS行內(nèi)樣式內(nèi)部樣式

在HTML樣式中有4種CSS引用方式,分別為:行內(nèi)樣式(行間樣式、內(nèi)聯(lián)樣式、行嵌樣式)、內(nèi)部樣式、鏈入外部樣式、導入外部樣式。10.2.2CSS鏈接外部樣式導入外部樣式樣式屬性作用font-family設置字體,如常見的宋體、楷體font-size設置字體大小,如24pxfont-style設置字體風格,如normal(正常)、italic(斜體)font-weight設置字體粗細,范圍在100~900,一般為整百數(shù)字,或采用保留值如:normal、bold(粗體)、bolder(特粗體)、lighter(特細體)color設置字體顏色background-color設置文字的背景顏色10.2.2CSSCSS常見字體屬性10.2.2JavaScript

JavaScript是一種被廣泛使用在網(wǎng)頁中的腳本語言,可以幫助網(wǎng)頁開發(fā)者完成網(wǎng)頁的動態(tài)交互效果,也能完成復雜的邏輯驗證。JavaScript必須結合HTML和CSS共同使用,單獨存在的JavaScript代碼是沒辦法執(zhí)行的。代碼示例JavaScript常用事件及其描述事件描述onClick鼠標單擊組件時產(chǎn)生該事件onchangetext或textarea元素中的字符值出現(xiàn)改變時產(chǎn)生該事件onSelect選中文本框中的內(nèi)容時產(chǎn)生該事件onFocus將光標放到文本框時產(chǎn)生該事件onLoad網(wǎng)頁開始加載時產(chǎn)生該事件onUnload退出網(wǎng)頁時產(chǎn)生該事件onBlur失去焦點時發(fā)生該事件,與onFocus相對應,例如text、textarea或select元素不在擁有焦點時產(chǎn)生該事件onMouseOver鼠標移動到某個元素上方區(qū)域時產(chǎn)生該事件onMouseOut鼠標指針離開某對象范圍時產(chǎn)生該事件onDblClick鼠標雙擊組件時產(chǎn)生該事件,與onClick相對應10.2.2JavaScriptAJAX(AsynchronousJavascriptAndXML,異步JavaScript和XML)是一種用于創(chuàng)建交互式網(wǎng)頁應用的技術。它通過在后臺與服務器進行異步數(shù)據(jù)交換,可以在不重新加載整個網(wǎng)頁的情況下更新頁面的部分內(nèi)容。使用AJAX,可以提高網(wǎng)頁的響應速度和用戶體驗。10.2.2AJAX工作原理第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六

WebStorm是JetBrains推出的一款商業(yè)的JavaScript開發(fā)工具,它提供了豐富的功能和工具,包括代碼提示、調(diào)試器、版本控制等,適用于大型前端項目的開發(fā)和管理。

HBuilder是一款HTML5開發(fā)工具,集成了代碼編輯器、調(diào)試器、構建工具等功能,支持多平臺開發(fā),包括Web、移動端和桌面應用程序的開發(fā),10.3Web前端開發(fā)工具WebStorm

HBuilder第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六10.4瀏覽器工具MicrosoftEdge是由微軟開發(fā)的網(wǎng)頁瀏覽器,它是Windows操作系統(tǒng)的默認瀏覽器。Edge采用了EdgeHTML引擎和Chromium引擎,支持最新的Web標準和技術,并提供了許多實用的功能,如集成的閱讀模式、沉浸式閱讀體驗等。GoogleChrome是由Google開發(fā)的網(wǎng)頁瀏覽器,它以其簡潔、快速和穩(wěn)定而廣受歡迎。Chrome采用了V8JavaScript引擎和Blink渲染引擎,支持多平臺(包括Windows、macOS和Linux)使用,并提供了豐富的擴展和應用程序生態(tài)系統(tǒng)。MozillaFirefox是一款開源的網(wǎng)頁瀏覽器,由Mozilla基金會和數(shù)百名志愿者共同開發(fā)和維護。Firefox采用了Gecko渲染引擎,支持多平臺,并注重用戶隱私和安全。Firefox提供了豐富的擴展和主題,用戶可以根據(jù)自己的需求定制瀏覽器。第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六10.5Web前端開發(fā)必知標準HTTP(HypertextTransferProtocol)是一種用于傳輸超文本的協(xié)議,是Web通信的基礎。了解HTTP協(xié)議的工作原理、請求方法、狀態(tài)碼、報文格式等內(nèi)容,對于Web開發(fā)人員來說至關重要。常見的HTTP請求方法包括GET、POST、PUT、DELETE等,常見的狀態(tài)碼包括200、404、500等。W3C(WorldWideWebConsortium)是制定Web技術標準的組織,它負責制定和推廣HTML、CSS、XML等技術規(guī)范。了解并遵循W3C標準可以確保網(wǎng)頁在不同瀏覽器上的一致性和兼容性,提高用戶體驗。ECMAScript是JavaScript的語言標準,定義了語言的語法、類型、語義等內(nèi)容。了解最新的ECMAScript標準可以幫助開發(fā)人員更好地使用和理解JavaScript語言,提高代碼的質(zhì)量和效率。第10章PythonWeb開發(fā)Web概述一Web前端開發(fā)技術二Web前端開發(fā)工具三瀏覽器工具四Web前端開發(fā)必知標準五Web前端開發(fā)框架六10.6Vue

Vue.js是一款輕量級、易用的JavaScript框架,用于構建交互式的Web界面。它采用了MVVM模式,提供了響應式的數(shù)據(jù)綁定和組件化的開發(fā)方式。在MVVM架構下,View和Model之間并沒有直接的聯(lián)系,而是通過ViewModel進行交互。Model和ViewModel之間的交互是雙向的,因此View數(shù)據(jù)的變化會同步到Model中,而Model數(shù)據(jù)的變化也會立即反應到View上。View和Model交互圖10.6Vue安裝1.下載所需要安裝包2.雙擊上一步下載的安裝程序,選擇【Next】,進行下一步,完成安裝。3.檢測安裝是否成功。通過快捷鍵【W(wǎng)in+R】打開系統(tǒng)【運行】,輸入【cmd】后單擊回車,打開命令行界面。輸入命令【node-v】查看node.js的版本號,檢測是否安裝成功安裝程序頁面第10章PythonWeb開發(fā)PythonWeb開發(fā)環(huán)境搭建七FastAPI框架八Web服務器和部署九ChatGLMWeb應用開發(fā)實例十1、安裝Python解釋器:首先需要從Python官方網(wǎng)站下載并安裝Python解釋器。在安裝過程中,可以選擇將Python添加到系統(tǒng)環(huán)境變量中,以便在命令行中直接使用Python解釋器。2、設置虛擬環(huán)境(可選):為了管理不同項目所需的不同Python包依賴,可以使用虛擬環(huán)境工具(如virtualenv、venv)創(chuàng)建獨立的Python環(huán)境。3、安裝pip:pip是Python的包管理工具,用于安裝和管理Python包。在安裝Python解釋器后,pip通常會自動安裝。如果沒有安裝,可以手動安裝pip。10.7Python開發(fā)環(huán)境的安裝10.7數(shù)據(jù)庫的安裝安裝PostgreSQL:訪問PostgreSQL官網(wǎng):/,根據(jù)自己的操作系統(tǒng)和需求下載對應的軟件安裝包。運行上一步下載的軟件安裝包,按照提示安裝。(1)設置賬號和密碼2.設置端口3.設置地區(qū)10.7數(shù)據(jù)庫使用安裝MySQL

按照PostgreSQL的安裝步驟,訪問MySQL官方網(wǎng)站,并下載適用于操作系統(tǒng)的MySQL安裝程序。

在安裝完成后,MySQL服務可能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論