python_ 学习笔记(hello world)
python中的循環(huán)語句
循環(huán)語句均可以尾隨一個else語句塊,該塊再條件為false后執(zhí)行一次
如果使用break跳出則不執(zhí)行。
for it in [1,2,3,4]:print(it,end=",") else:print("執(zhí)行else語句塊") #1,2,3,4,執(zhí)行else語句塊 View Code:不使用break for it in [1,2,3,4]:print(it,end=",")if it == 4:break else:print("執(zhí)行else語句塊") #1,2,3,4, View Code:使用break?python的pass語句
pass語句只是為了保持程序的結(jié)構(gòu)性,沒有任何內(nèi)容
python的函數(shù)參數(shù)
在函數(shù)的參數(shù)中,類似C++的值傳遞和引用傳遞,python中不可變元素在函數(shù)中修改不會影響外部的值(number、tuple、string),而可變元素則相反。
#傳遞可變參數(shù) def mFcn(myDic):myDic['d'] = 2040aDic = {'a':2010,'b':2020,'c':2030} mFcn(aDic) for it in aDic:print(it,aDic[it]) # a 2010 # b 2020 # c 2030 # d 2040#傳遞不可變參數(shù) def umFcn(myStr):myStr = "修改后"aStr = '修改前' umFcn(aStr) print(aStr)#修改前 View Code:測試傳遞可變或不可變參數(shù)的效果python的正式參數(shù)類型(必須參數(shù)、關(guān)鍵子參數(shù)、默認參數(shù)、可變長參數(shù))
def fcn4(*t):print(type(t))for it in t:print(it)fcn4('a','v','d') # <class 'tuple'> # a # v # d View Code:不定長數(shù)組參數(shù)的傳入方式 def fcn5(**d):print(type(d))for it in d:print(it , d[it])fcn5(k1=1,k2='v2') # <class 'dict'> # k1 1 # k2 v2 View Code:不定長字典參數(shù)的傳入方式
參數(shù)傳遞中,* 可單獨出現(xiàn),強制其后的參數(shù)使用關(guān)鍵子參數(shù)的方式賦值
def testFcn(a,b,*,num1,num2):pass#testFcn(1,2,3,4)#TypeError: testFcn() takes 2 positional arguments but 4 were given testFcn(1,2,num1 = 3, num2 = 4) View Code:必須使用關(guān)鍵子參數(shù)賦值,否則報錯?
python匿名函數(shù)
python的lambda只是一個表達式,語法如下:
sum = lambda arg1,arg2:arg1+arg2 print(sum(10,90)) View Code:lambda表達式例子python的return關(guān)鍵子
python的變量作用域
?python的作用域有四種:按照查找順序依次排列
- 局部作用域
- 嵌套作用域:閉包函數(shù)外的函數(shù)中
- 全局作用域
- 內(nèi)置作用域:內(nèi)置函數(shù)所在的模塊范圍
在python中,只有類(class)、模塊(model)和函數(shù)(def? lambda)會引入新的作用域
這也就是說,如果實在if語句、try-catch語句或者for/while語句中賦值定義的對象,和在其外部定義效果相同
為了區(qū)分不同作用域中的同名對象,可能需要使用關(guān)鍵子nonlocal和global
- nonlocal:引入嵌套作用域的變量
- global:引入全局作用域的變量
以nonlocal舉例,global類似:
1 #測試nonloacl和global關(guān)鍵子 2 3 def fcn0(): 4 num = 0 5 print('嵌套作用域頭:' + str(num)) 6 #下面定義 7 def fcn2(): 8 nonlocal num 9 num = 1 10 print('局部作用域:' + str(num)) 11 #下面調(diào)用 12 fcn2() 13 print('嵌套作用域尾:' + str(num)) 14 15 fcn0() View Code:nonlocal使用舉例由以上代碼可以看出,局部作用域內(nèi)的num其實是來自嵌套作用域,在局部的操作影響的嵌套作用域中的對象。
python3的數(shù)據(jù)結(jié)構(gòu)
- 列表
列表可以用作堆棧和隊列等,列表內(nèi)置了基本的棧操作和隊列操作
列表推導(dǎo)式:
一般用于對序列的每一個(或條件)元素都進行操作后,用這每一個新的結(jié)果生成一個新的列表
每個列表推導(dǎo)式都在for后跟一個表達式,然后有零到多個for或if子句。推導(dǎo)元組必須使用括號
#測試列表推導(dǎo)式 l1 = [-0.5,-0.33,-0.1,0,1,33,5.55] #全部遍歷 li2 = [it*2 for it in l1] print(li2) #[-1.0, -0.66, -0.2, 0, 2, 66, 11.1] View Code:遍歷所有元素 #測試列表推導(dǎo)式 l1 = [-0.5,-0.33,-0.1,0,1,33,5.55] #條件遍歷:只遍歷符合條件的元素 li2 = [it*2 for it in l1 if it >= 0] print(li2)#[0, 2, 66, 11.1] View Code:遍歷符合條件的元素 - del語句
del可以使用下表來刪除元素,也可以用來刪除實體變量 - 元組和序列
元組:元組由多個值組成 a = 123,456,'nihao'
序列。。。 - 集合:
集合內(nèi)部元素不重復(fù),集合內(nèi)部元素無序,集合也可以使用推導(dǎo)式 - 字典:
字典創(chuàng)建鍵值對推導(dǎo)式
d = {k:k**2 for k in (1,2,3,4,5,6)} for k,v in d.items():print(k,v) # 1 1 # 2 4 # 3 9 # 4 16 # 5 25 # 6 36 View Code:字典推導(dǎo)式 - 遍歷技巧:
d = {k:k**2 for k in (1,2,3,4,5,6)} for k,v in d.items():print(k,v) # 1 1 # 2 4 # 3 9 # 4 16 # 5 25 # 6 36 View Code:遍歷字典技巧
t1 = ['name:','age:','id:'] t2 = ['lyn', 23, 20130430721]msg = [str(t) + str(c) for t,c in zip(t1,t2)] print(msg) #['name:lyn', 'age:23', 'id:20130430721'] View Code:遍歷多個序列技巧
- 模塊
__Name__ 屬性,當模塊是自身在運行是__name__屬性為“__main__”,如果不是自生在運行,而是被其他模塊導(dǎo)入,則__name__屬性是當前模塊的名稱! - 異常處理try...excepte ex1...except ex2...except ...else...finally
嘗試執(zhí)行try塊中的代碼,如果發(fā)生異常則逐個匹配except的異常類型,如果匹配到則執(zhí)行并執(zhí)行異常處理之后的代碼。- except后不跟任何異常類型則匹配所有的異常,你可以在這里輸出異常,并再次拋出給上層代碼。
- else塊在沒有發(fā)生異常時執(zhí)行。
- finally,無論如何都會執(zhí)行,finally會再次拋出這個異常
- 拋出異常
使用raise語句拋出一個異常,raise NameError("這是一個異常"),raise后面的必須是異常的實力或者異常的類(也就是exception的子類);
如果我們只想檢測是否有異常,而不是處理它,那么我們可以直接使用raise不跟任何語句,就可以再次拋出這個異常;
通過繼承Exception類,我們可以定義自己的異常類,名稱一般以Error結(jié)尾,這和標準的異常命名一樣! - with語句,類似于C#using對于非托管資源的處理
無論發(fā)生什么,這個資源都會被正確的執(zhí)行清理方法
with open(r"G:\PythonWorkSpace\testWith.py") as withFd:pass print(withFd.closed)#True View Code:with關(guān)鍵字的用法?
轉(zhuǎn)載于:https://www.cnblogs.com/bbdr/p/10428775.html
總結(jié)
以上是生活随笔為你收集整理的python_ 学习笔记(hello world)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BZOJ5335】【TJOI2018】
- 下一篇: iOS进阶_Socket(Socket简