標籤:調用 生活 結果 位置 send count mes 中國 返回
1.修改檔案
補充上次沒洗完的:
想要修改某個檔案裡一塊地方,可以使用seek函數找到位置write函數修改。
是不是覺得這很簡單?
但是如果你這樣操作很可能會出現亂碼。
因為由於位元組數的不同,編碼的不同,你把你寫的東西直接添加進去對原來的位置不是往後移,而是在原來的位置上直接覆蓋,所以可能會出現亂碼。
但是為什麼word、wps可以直接修改檔案?
wps、word會把檔案從記憶體中全部載入到硬碟上,而不是在記憶體中修改,你有可能會發現當我們開啟一個很大的檔案時wps.word開啟都很慢,因為把檔案從記憶體中載入到硬碟裡需要時間,檔案越大需要的時間越多!
2.函數
函數是將一組語句通過一個名字*(函數名)封裝起來,要想執行時,只需要調用其名字即可。
def fun(): 操作
主要作用是為了減少代碼重複、使程式變得可擴充、易於程式的維護
下面我們看看什麼是形參實參?
def fun(x,y): #這其中x,y是形參 操作#函數調用fun(5,6) #實參
python中的預設參數(舉例生活中我們需要填一些東西,他老讓我們寫國籍,在我們的學校裡都基本是國人,所以我們不想寫國籍了怎麼辦?
用預設參數直接預設填寫)
#預設參數def fun(name,age,loc="中國"): 操作
當我們調用時如果不寫這個參數他會預設是中國
fun("盧本偉",99) #我們沒有寫 就顯示中國fun("盧本偉",99,us)#如果寫了就顯示什麼
注意的是預設參數必須放在位置參數的後面!!!!!!
python中的關鍵參數(必須放在未知參數後面)
def fun(name,age,country): 操作#函數調用fun("盧本偉",country="日本",age=99)
python中非固定參數
def send(msg,*user): for u in user: print("警示",u)
調用
方式一 send("警示",‘alex‘,‘daliu‘)其實寫了*user後,參數就不固定了看你需要多少!方式二send(‘警示‘,*[‘alex‘,‘daliu‘])
注意啦:::若*user後面還有參數怎麼寫呢 上面的寫法是會報錯的。
舉例子:
def send(name,*user,age): 操作調用:send("盧本偉",‘alex‘,‘daliu‘,age=99)這樣子是不會報錯的
可能大家也注意到了 *user就是穿了一個元祖/列表
那可以傳遞字典嗎?
當然是可以的。。
name={"01":"盧姥爺","02":"開掛最牛逼"}def send(msg,**name): 操作函數調用:send("警示",**name)
2.1傳回值
函數中止並返回結果,未指定的返回none,函數永遠只返回一個值
若出現這種:return name,age 是返回了兩個值嗎?
不是的,系統會將他們當做元祖顯示出來。
也可以直接返回元祖例: return [name,age]
2.2局部變數、全域變數
局部變數:函數裡面定義的變數,只在函數內部有效.
執行就近原則!
name=[‘alex‘,‘black‘,‘peiq‘]def change(): def name[2] name[1]=‘黑‘ print(names)#函數調用change()print(names) 結果是:name=[‘alex‘,黑]
為什麼可以改變全域變數的值?這其實只是把name的地址當做是一個整體,但其內部是可以修改的!那種的是可以修改的?就像這種一串串的可以修改 什麼列表呀 字典丫的
2.3嵌套函數
就是函數裡面嵌套函數嘛
要說的只有一點非常的重要
def change() : print("a") def change1() : print("b")函數調用change()
這個結果會顯示什麼?
結果:a
因為change1沒有被調用所以不會執行
2.4匿名函數
fun=lambda x,y :
x*y
調用:print(fun(2,5))
就這個例子自行體會,要知道的是在匿名函數最騷的操作可能就是三元運算了。迴圈什麼都不行,
2.5高階函數
滿足條件:
1.函數中參數是另一個函數(就是參數是函數)
def a(x,y): return x*ydef b(x): return xf=b(a) #函數a被當做參數傳入print(f(2,8))
2.傳回值中返回有函數
例:return abs,x,y
python大法好——修改檔案、函數