python基礎舉例

最近又重新開始學python,淺淺記錄下學習到的東西(也方便自己回顧看)
縮進、空格對于python很重要,一定要注意!
以下代碼是基于pycharm編寫的。

01 輸出

#注釋
# 單行注釋用# ,ctrl+/是單行注釋的快捷鍵
# 多行注銷,全部選中,按住ctrl+/
# 多行注釋,在python是用'''或"""(但不是很推薦)
#輸入輸出 %占位符,后面跟的是變量的類型
# print 函數自帶換行效果
name="張陽"
classinfo="新世紀中學一年三班"
age=17
print("我的名字是%s:來自%s,今年%d"%(name,classinfo,age ))  #%S表示字符型,%d表示整數型#基礎輸出語句
print("He said \"Let's go!\"") #\ means 轉義符
print("He said \"Let\'s go!\"") #the same result as the 1st floor
print("Hello! \nHi!") #\n means 另起一行
print("hello!"+" hahaha")  #兩個字符組合在一起輸出
#對字符串求長度
s = "Hello world!"
print(len(s))#通過索引獲取單個字符,數組是從0開始計數的
print(s[0])# 布爾類型
b1=True
b2=False
#空值類型
n=None
#type 函數  輸出數據類型
print(type(s))
print(type(b1))
print(type(n))
# 舉例
#BMI計算
user_weight =float(input("請輸入您的體重(單位:kg):"))  #輸入的是字符,所以需要轉為float數
user_height =float(input("請輸入您的身高(單位:m):"))
user_BMI=user_weight /(user_height ** 2)
print("您的BMI值為:"+str(user_BMI)) #需要轉換成str字符類型,才可以輸出

02 基礎數值計算

import math
a=-1
b=-2
c=3
x1=(-b+math.sqrt( b**2 -4*a*c))/(2*a)
x2=(-b-math.sqrt( b**2 -4*a*c))/(2*a)
print(x1,x2)
#if-elif 的使用
#多分支,猜拳的小游戲
import random
person=int(input("請出拳:[0:石頭,1:剪刀,2:布]"))
computer=random.randint(0,2)  #在0到2之間取隨機整數
if person>2 or person <0 :print("請輸入正確的數字!")
elif   (person==0 and computer ==1) or (person==1 and computer ==2) or (person==2 and computer ==0):win=1print("計算機輸出為:%d" %computer )print("恭喜您,獲勝!")
elif person==computer :win=0print("計算機輸出為:%d" % computer)print("平局,再來一次吧!")
else :win=-1print("計算機輸出為:%d" % computer)print("很遺憾,您輸了!")
# 舉例
#打印一個直角三角形
row=1
while row<=7:j=1while j<=row:print("*",end=" ") #這個end保證此print不換行,下面有個print()是為了有個換行j+=1print()row+=1#打印一個等腰三角形
height=int(input("請輸入想要的等腰三角形的高:"))
standard=0
while standard< height:left=height-standardright=height+standardwhile left>=2:print(" ", end=" ")left-=1left = height - standardwhile left<=right :print("*",end=" ")left+=1print()standard+=1#for 循環,適合有限次的循環;適合遍歷集合
tags="我是不是一個人"
for item in tags:  #從tags中取值,遍歷進行輸出   tags是字符串類型,本身就是一個字符類型的集合print(item)
#range 此函數可以用來生成一個數據集合列表
range(起始,結束,步長) 步長不可為0,默認步長為1
for data in range(1,101):  #起始數字,左邊包含;結束數字,右邊不包含print(data,end ="")if data % 10==0:print()

03 列表

# 在python, 序列就是一組按照順序排列的值,即數據集合
# 有三種內置的序列類型:字符串、列表、元組
# 切片:可以根絕下標,獲取序列對象的任意(部分)數據
name="peter"
print("姓名首字母變成大寫%s"%name.capitalize() )  #首字母變大寫# list: 列表,是一種有序的數據集合。
# 支持增刪改查、數據項可以變化(內存地址不會改變)。
# 用[]表示列表,數據項之間用逗號來分割,數據項可以是任何類型的數據。支持索引和切片來進行操作shopping_list = []  #創建列表
shopping_list.append("鍵盤")  #添加字符串
shopping_list.append("鍵帽")
shopping_list.remove("鍵帽")  #移出
shopping_list.append("音響")
shopping_list.append("電競椅")print(shopping_list)
print(len(shopping_list)) #輸出長度
print(shopping_list[0]) #輸出排在第一個位置的元素price =[799, 1024, 200, 800]
max_price = max(price)
min_price = min(price)
sorted_price = sorted(price)  #排序
print(max_price,min_price )
print(sorted_price)
li=[1,2,3,"您好",8,9,10]
print(type(li))
print(len(li))  #獲取字符串的長度
print(li[0])   #輸出第一個元素
print(li[1:])   #獲取從第二個元素開始到最后的元素
print(li[: : -1])  #-1表示倒序輸出(從右往左輸出)
print(li *2)  #表示重復輸出兩次
li.append(["hello","goodbye"])   #末尾新加
li.insert(4,"這是我剛插入的數據")  #在第四個位置后,進行信息插入
print("追加之后1",li)
rsDate=list(range(10))   #強制轉換成為list對象
li.extend(rsDate )  #擴展,批量增加
print("追加之后2",li)
li[0]="peter"  #對第一個元素進行修改
print("修改之后1",li)
del li[0]   #刪除列表中的第一個元素
print("修改之后2",li)
del li[1:3]  #批量刪除,刪除第二到第三的所有數據
print("修改之后3",li)
li.remove(0)  #移出為0的指定項,只能移除找到的第一個指定元素
print("修改之后4",li)
li.pop(5)  #移出指定位置的香,比如這里移出第六個項
print("修改之后5",li)
print(li.index(8))  #查找8所在的位置

04 元組/字典簡單使用

# 元組用(),不可變,添加刪除不可使用
# 元組,是一種不可變的序列,在創建后不可做任何的修改。
# 用()來創建元組,數據項用逗號來分割,可以是任何的類型。
# 當元組中只有一個元素是,要加上逗號,不然解釋器會當做整形來處理
tupleA =()  #創建空元組
tupleA =("abcd",89,2.22,"marry",[11,22,33,44])  #對空元組進行賦值
print (tupleA)
#元組的查詢
for item in tupleA :   #依舊可以遍歷print(item, end=" ")
print()
print(tupleA [2])  #可以通過索引獲得單個元素
print(tupleA [:: -1])   #反轉
print(tupleA [:: -2])   #隔兩個,取一次反轉
tupleA [4][0] =2223  #可以對元組中的列表元素進行修改,這里是對列表的第一個元素進行修改,但是元組中非列表的其他元素就不可以修改
print(tupleA )#一個字典,k可以進行查詢
# 字典,由鍵值對組成的集合,通常使用鍵來訪問數據,支持對數據的添加、修改、刪除
# 不是序列類型,沒有下標的概念,是一個無需的鍵值組合。用{}來表示字典對象,每個鍵值對用逗號分離
# 鍵,必須是不可以變的類型。值可以是任意的類型。每個鍵是唯一的,如果出現重復的鍵,后者會覆蓋前面的
slang_dict = {"巨星年代":"來了嗎","卷王時代":"啥時候過去?"}  #創建了長度為2的詞典
slang_dict["雙減"] ="書本簡單了,考試依舊難"
slang_dict["破防"] = "破了你的防御"
query=input("請輸入你想要查詢的流行語:")
if query in slang_dict : #判斷查的詞是否在字典中print("您查詢的"+ query +"含義如下:")print(slang_dict [query])
else:print("當前本詞典收錄詞條數為:"+ str(len(slang_dict ))+ "條。")# 字典再舉例
dictA={}  #創建一個空字典
dictA ["name"]="揚不養"  #添加字典數據。key:name。value:揚不養
print(dictA )
dictA ["age"]=103
print(dictA )
dictB={"pro":"藝術","school":"家里蹲大學"}  #也可以在新建字典的時候,之間添加字典數據
print(dictB )
print(len(dictB ))   #以逗號分割為一項,故上面的dictB只有兩項
print(dictA ["name"])  #取鍵值
dictA["name"]="王不枉"  #修改鍵對應的值
print(dictA )
print(dictA .keys())  #打印 所有的鍵
print(dictA .values())  #打印所有的值

05 函數使用

#定義函數
def calculate_sector_1(central_angle, radius):#接下來是一些定義函數的代碼sector_area =central_angle /360 *3.14* radius **2print(f"此扇形面積為:{sector_area}")calculate_sector_1(160,30)def calculate_bmi (weight, height):bmi=float(weight)/float(height) **2if bmi<=18.5:label="偏瘦"elif bmi <=25 :label = "正常"elif bmi<=30:label = "偏胖"else:label = "肥胖"print("您的BMI分類為:"+ label)print("您的BMI為:"+ str(bmi))return bmicalculate_bmi(70,1.8)
#函數使用練習2
#定義一個學生類
#能夠設置學生某科目的成績
#能夠打印出該學生的所有科目成績class Student:def __init__(self, name, student_id):  #init這是固定格式self.name = nameself.student_id = student_idself.grades = {"語文": 0, "數學": 0, "英文": 0}def set_grade(self, course,grade):  #self是固定,必須有的if course in self.grades:self.grades[course]=gradedef print_grades(self):print(f"學生{self.name}(學號: {self.student_id})的成績為:")for course in self.grades:print(f"{course}: {self.grades[course]}分")chen = Student("小陳","100663")
zeng = Student ("小曾","100633")
print(chen.name)
zeng.set_grade("數學",95)
zeng.set_grade("語文",94)
zeng.set_grade("英文",93)
print(zeng.grades )
zeng.print_grades()
# 函數使用練習3:可變函數
# 可變參數:當參數個數不確定時使用,比較靈活
# 計算累加和
# 可變參數*接收的是元組類型,**接收的是字典類型
def getComputer(* args) :print(args)result=0length=int(len(args))while length>0 :result=result+args[length-1]length-=1"""另一種求和方式for item in args:result+=item"""print(result)getComputer(1,2,3,4,5)# 關鍵字可變參數,用**來定義
# 在函數體內,參數關鍵字是一個字典類型,key是一個字符串
def keyFunc(**kwargs) :print(kwargs )
dictC={"name":"Pipi","age":32}
# keyFunc(dictC)   #這樣是不可以的
keyFunc( **dictC)  #這樣是可以的
keyFunc(name="peter",age=22)  # 這樣是可以的,是以鍵值對的方式進行傳遞
# 函數練習使用4
# 寫函數,接收n個數字,求這些參數數字的和;
def adder(*number):sum=0for item in number :sum+=itemreturn sum
print(adder(1,2,3,4,5,8))
# 寫函數,找出傳入列表或元組的奇數位對應的元素,并返回一個新的列表;
def process(con):listNew=[]index=1for i in con :if index %2 ==1:  #判斷奇數位listNew.append(i)index+=1return listNew
print(process([1,2,3,4,4,5,6,7,8,9,10,11]) )
# 寫函數,檢查傳入字典的每一個value的長度,如果大于2,那么保留前兩個長度的內容,并將新內容返回給調用者。PS:字典中的value只能是字符串或列表
def dictD (dictparms):result={}for key, value in dictparms .items():  #返回的是字典的數據項if int(len(value)) >2:result[key]=value[:2]  #向字典去添加數據else:result[key]=valuereturn result
dictDD={"name":"bibi","age":"22","hobby":"baseball","saygoodbye":["no","hay","bye",5,6]}
# 注意上面的22需要加",因為不加就是int型,int不可以用len
print(dictD(dictDD ) )# 匿名函數,沒有名字的函數,后面自帶的表達式只有一個,只能實現簡單的功能
# 語法結構: lambda 參數1、參數2、參數3:表達式
M=lambda x,y:x+y  #通過變量去調用匿名函數
print(M(22,26))

06 類的使用

# 面向對象編程 OOP (object oriented programming)
# 面向過程,是按照解決問題的步驟開始寫的
# 類:是一組具有相同或相似屬性、特征、行為的一系列對象的集合
# 對象:類的實例化、具象化
#
class Person:name="小明"  #類屬性,表示直接歸屬于類的屬性age=18def __init__(self,id):   #實例屬性,可理解為默認的初始值self.id="A111111"def eat(self):    #實例方法,在類的內部,使用def關鍵字來定義,第一個參數默認是selfprint("大口大口吃飯")def run(self):print("一點也跑不動,不喜歡長跑")xm=Person (333)  #創建一個對象,333指的是id
xm.eat()  #調用函數
xm.run()
print("{}的年齡是:{}".format(xm.name,xm.age))class People:def eat(self):print("需要吃一日三餐")sam=People ()
sam.eat()
sam.age=22  #添加的是實例屬性
sam.sex="male"#  self和對象指向同一個內存地址,可以認為self就是對象的引用
class Human:def eat(self):  #實例方法print(self)
xw=Human()
xw.eat()# 析構方法 相當于所有程序用一遍后,最后使用del()自動刪除,釋放內存空間
class Animal:def __init__(self,name ):self.name=nameprint("這是析構方法的初始化")def __del__(self):  #主要的應用就是操作對象的釋放,一旦釋放完畢,對象便不能再使用print("這是析構方法")cat=Animal ("貍花")
# python中展現面向對象的三大特征:封裝、繼承、多態
# 封裝:指的是把內容封裝到某個地方,便于后面的使用。
# 繼承:子可以繼承父的內容。
class Animal2:def eat(self):print("can eat")def drink(self):print(" can drink")
class Dog(Animal2 ):   #繼承animal2的內容def sound(self):print("汪汪")
class Cat(Animal2 ):def sound(self):print("喵喵")
D1=Dog()
D1.drink()
C1=Cat()# 多繼承,一個子類可以從多個父類進行繼承
class monster(Dog, Cat):pass
m1=monster()
m1.sound()# 多態。多態必須發生在父類和子類之間,子類重寫多態的方法
class Animal3:  #父類def say_who(self):print("I am an animal.")
class Duck(Animal3 ):def say_who(self):  #子類和父類這個名字相同時,才算是重寫print("I am a duck.")pass
duck1=Duck()
duck1.say_who()
#類繼承練習:人力系統
#員工分為兩類,有相同屬性,有不同屬性
#子類優先調用自己的,自己沒有時,才向父類調用class Employee:def __init__(self, name, id):self.name = nameself.id = iddef print_info(self):print(f"員工名字: {self.name}, 工號:{self.id}")class FullTimeEmployee(Employee):def  __init__(self, name, id, monthly_salary):super().__init__(name, id) #用super表示的父類self.monthly_salary = monthly_salarydef calculate_monthly_pay(self):return self.monthly_salaryclass PartTimeEmployee(Employee):def  __init__(self, name, id, daily_salary, work_days):super().__init__(name, id) #用super表示的父類self.daily_salary = daily_salaryself.work_days = work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_dayszhangsan = FullTimeEmployee("張三","1111",8000)
lisi=PartTimeEmployee ("李四","1110",300,15)
zhangsan.print_info()
lisi.print_info()
print(zhangsan.calculate_monthly_pay())
print(lisi.calculate_monthly_pay() )

07 文件路徑學習

#讀文件
f=open("./read.txt","r",encoding= "utf-8")  #./表示相對路徑(常用于在同一路徑下時),r表示只讀,encoding表示編碼方式
content=f.read()
print(content)
f.close()  #關掉對文件的操作
#寫文件
with open("./poem.txt","w",encoding="utf-8") as f1:f1.write("我欲乘風歸去,\n")  #沒有換行符,這里就是不換行接著寫f1.write("又恐瓊樓玉宇,\n")f1.write("高處不勝寒。\n")
#在前面內容的基礎上繼續加話,但是如果還是用w模式則會將前面內容清空,所以采用a模式,即添加
with open("./poem.txt","a",encoding="utf-8") as f1:f1.write("起舞弄清影,\n")f1.write("何似在人間,")

08 異常捕捉

#try-except 是從上往下運行,如果前面的except已經捕捉到了錯誤,下面的就不會再執行了,類比if-else
try:user_weight =float(input("請輸入您的體重(單位:kg):"))  #輸入的是字符,所以需要轉為float數user_height =float(input("請輸入您的身高(單位:m):"))user_BMI=user_weight /(user_height ** 2)
except ValueError:  #如果輸入一個非數字的字符,程序就會報錯,也就是ValueErrorprint("輸入不為合理數字,請重新運行程序,并輸入正確的數字。")
except ZeroDivisionError :  #即除零錯誤print("身高不能為零,請重新運行程序,并輸入正確的數字。")
except:  #可以捕捉發生的任意錯誤(常考慮于錯誤情況考慮不全時)print("發生了未知的錯誤,請重新運行程序")
else:  #沒有錯誤時,會運行print("您的BMI值為:" + str(user_BMI))  # 需要轉換成str字符類型,才可以輸出
finally:  #無論錯誤與否,都會被執行print("程序結束運行。")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909439.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909439.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909439.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開疆智能ModbusTCP轉Canopen網關連接匯川PLC配置案例

本案例是通過開疆智能研發的ModbusTCP轉Canopen網關將匯川PLC與陀螺儀連接進行組網通訊。 準備階段 軟件&#xff1a;InoProShop(V1.7.3)&#xff0c;CANopen Configuration Studio PLC&#xff1a;匯川AC801-0221-R0R0 網關&#xff1a;開疆智能ModbusTCP轉Canopen網關 陀…

Tess4J:基于 Java 的 OCR 解決方案

在現代軟件開發中&#xff0c;圖像識別與文本提取已成為許多應用場景中的關鍵環節。OCR&#xff08;Optical Character Recognition&#xff09; 技術使得從圖像中提取文字成為可能。Tess4J 是一個基于 Java 的 OCR 開發庫&#xff0c;它封裝了 Google Tesseract OCR 引擎的本地…

Vue3 + JavaScript 父組件點擊按鈕觸發子組件事件方法

在 Vue 3 中&#xff0c;父組件點擊按鈕觸發子組件事件有以下三種常用方式&#xff1a; 方法 1&#xff1a;使用 ref 直接調用子組件方法&#xff08;推薦&#xff09; vue 復制 下載 <!-- 父組件 --> <template><button click"callChildMethod"…

超強人工智能解決方案套件InfiniSynapse:精準的業務理解、對各種數據源進行全模態聯合智能分析--部署安裝@Ubuntu22.04 @Docker

InfiniSynapse 通過自研的第二代LLM-Native RAG實現了企業業務的理解&#xff0c;精準的Schema召回保證數據的準確性。提供專門為大模型優化的InfiniSQL語言&#xff0c;從而可以更加準確的生成查詢語句&#xff0c;通過 InfiniSQL 引擎讓人類第一次對存儲在各種數據源的全模態…

解決國內無法加載谷歌驗證碼(reCAPTCHA):URL 重定向配置指南

解決國內無法加載谷歌驗證碼&#xff08;reCAPTCHA&#xff09;&#xff1a;URL 重定向配置指南 在搭建網站或使用某些應用時&#xff0c;經常會遇到需要調用谷歌驗證&#xff08;reCAPTCHA&#xff09;API 的情況。然而&#xff0c;由于網絡環境的特殊性&#xff0c;國內多數…

【Qt】如何使用QtInstallerFramework打包Qt程序

使用 Qt Installer Framework 可以將你的 Qt 程序打包成一個帶有安裝向導的安裝包&#xff0c;適用于 Windows、Linux 和 macOS 平臺。以下是完整的打包流程&#xff0c;以你當前開發的 ecgexport 應用為例。 &#x1f9f0; 一、準備工作 1. 安裝 Qt Installer Framework 下載…

如何編寫高效的Prompt:從入門到精通

在人工智能時代&#xff0c;特別是隨著大型語言模型(LLM)如ChatGPT、Claude等的普及&#xff0c;編寫高質量的Prompt(提示詞)已成為一項關鍵技能。一個好的Prompt可以顯著提高AI輸出的質量和相關性&#xff0c;而一個糟糕的Prompt可能導致無用甚至誤導性的結果。本文將帶你深入…

智慧工地云平臺源碼,基于微服務架構+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平臺系統&#xff0c;智慧工地全套源碼&#xff0c;java版智慧工地源碼&#xff0c;支持PC端、大屏端、移動端。 智慧工地聚焦建筑行業的市場需求&#xff0c;提供“平臺網絡終端”的整體解決方案&#xff0c;提供勞務管理、視頻管理、智能監測、綠色施工、安全管…

【機械視覺】Halcon—【十三、實例找各個區域面積和中心點】

找區域面積和中心點 *獲取圖像 read_image (Image, fabrik) *關閉窗口 dev_close_window () *打開窗口 dev_open_window (0, 0, 512, 512, black, WindowID) *設置輸出字體&#xff0c;14號字&#xff0c;Courier字體&#xff0c;粗體 set_display_font (WindowID, 14, mono, …

MongoDB 基礎

一、MongoDB 基礎概念 1. 什么是 MongoDB MongoDB 是一個文檔型數據庫&#xff0c;數據以類似 JSON 的文檔形式存儲&#xff0c;使用 BSON 格式。設計理念是應對大數據量1、高性能和靈活性需求。數據組織方式&#xff1a;數據庫→2集合→文檔&#xff0c;其中集合類似于關系型…

RNN:從記憶困境到序列建模革命

在自然語言處理的戰場上&#xff0c;一個句子中的每個單詞都承載著前文的記憶。當傳統神經網絡面對這種時序依賴束手無策時&#xff0c;循環神經網絡&#xff08;RNN&#xff09; 以獨特的循環結構開啟了序列建模的新紀元。它像人類閱讀般記憶上下文&#xff0c;卻也因記憶衰減…

陽臺光伏配套電表ADL200N-CT/D16-Wf-1

安科瑞 華楠 18706163979 引言 在“雙碳”目標推動下&#xff0c;綠色能源正逐步走進日常生活。陽臺光伏作為一種新型分布式發電方式&#xff0c;憑借靈活安裝、高效節能的特點&#xff0c;成為城市家庭和工商業用戶的新選擇。安科瑞推出的ADL200N-CT/D16-Wf-1陽光光伏電表&a…

功能測試—軟件的生命周期

市場需求調研 可行性研究 從企業的人力儲備、技術儲備、資金儲備等方面出發&#xff0c;論證經濟效益或者社會效益能否達到預期 項目立項 需求開發 輸出&#xff1a;需求規格說明書需求評審&#xff08;需求測試&#xff09;&#xff1a;測試&#xff08;測試負責人、資深測…

PostgreSQL 日常維護

目錄 前言 基本使用 1. 登錄數據庫 2. 數據庫操作 2.1 列出庫 2.2 創建庫 2.3 刪除庫 2.4 切換庫 2.5 查看庫大小 3. 數據表操作 3.1 列出表 3.2 創建表 3.3 復制表 3.4 刪除表 3.5 查看表結構 4. 模式操作命令 4.1 創建模式 4.2 默認模式 4.3 刪除模式 4.4…

STM32F4通用定時器TIM9-TIM14講解及PWM呼吸燈實例解讀

STM32F4通用定時器TIM9-TIM14講解及PWM呼吸燈實例解讀 前言小貼士 通用定時器原理定時器的內部時鐘源通用定時器TIM9-TIM14的對比共同點區別 TIM9-TIM14功能說明時基單元計數模式時鐘選擇 定時器框圖理解和分析TIM10/TIM11/TIM13/TIM14輸入捕獲輸出比較 TIM9和TIM12獨立通道輸入…

whttpserver:一個命令極速搭建文件上傳與下載服務器

whttpserver 是一個簡單的HTTP服務器&#xff0c;類似于python -m http.server&#xff0c;但增加了文件上傳和編輯的功能。 1. 安裝 whttpserver 模塊 # 臨時設置環境變量 PYTHONUTF81&#xff0c;強制 Python 使用 UTF-8 編碼 set PYTHONUTF81 pip install whttpserver 2.…

【0.2 漫畫操作系統原理】

??? 漫畫操作系統原理 ?? 學習目標:深入理解操作系統核心原理,為Java并發編程和性能優化打下堅實基礎 ?? 第一章:操作系統初識篇 ?? 什么是操作系統? 想象一下,你是一個大型圖書館的館長… ?? 沒有操作系統 vs 有操作系統沒有操作系統: 讀者1 → 直接找書架…

第1章 C# 和 .NET 框架 筆記

第1章 C# 和 .NET 框架 1.1 在 .NET 之前 C#為在.NET框架上開發程序而設計的編程語言。 MFC&#xff08;Microsoft Foundation Class&#xff0c;微軟基礎類庫&#xff09; 微軟公司提供的一個類庫&#xff0c;以 C 類的形式封裝了 Windows 的 API&#xff0c;并包含一個應…

Django全棧開發實戰與架構思考

一、框架選型與開發范式 作為Python生態最成熟的Web框架&#xff0c;Django的"電池全包"理念在2.3版本后得到更徹底的貫徹。項目初期通過django-admin startproject生成的腳手架已包含&#xff1a; 自動化ORM遷移系統 內置Admin后臺管理界面 基于WSGI的中間件管道…

微服務--Gateway網關

1. Gateway簡介 Gateway網關是微服務架構中不可或缺的組件&#xff0c;是微服務架構中的統一入口&#xff0c;它作為所有客戶端請求的第一道防線&#xff0c;負責請求的路由、過濾和聚合。 Gateway核心功能 路由(Routing) 根據請求路徑、Header、參數等將請求路由到不同微服…