python基礎二
- 2019 年 10 月 6 日
- 筆記
一、文件的處理
在學習爬蟲的時候對數據的儲存和文件的處理有一定的了解,
掌握好文件處理的步驟很好理解,對於其他文件的處理不懂的(資料庫)之類的,可以先了解open()即可。
二、函數
函數概述:
將一個功能寫好,我們給它起一個名字,方便我們下次使用,減少程式碼的重複。
1、創建一個函數並計算1+2並且輸出
def add():
x = 1+2
print(x)
add()
def 聲明一個函數
add 你聲明一個函數起的名字
add()調用該函數
2、返回值
按照1中的例子,我們如果不想列印x的值,我們下面需要用到這個x,我只想得到這個x的值。就會用到函數的返回值。我們可以將1中的函數修改成有返回值的函數。
def add():
x = 1+2
return x
print(add())
return:返回值,即x。值得注意的是:return代表一個函數的結束。後面的程式碼不再執行。
add():此時我們調用add()就不會輸出x的值,而add()就代表x的值,我們想要輸出的話,輸出add()即可。
有更多疑問?
如果1中我們沒有返回值,我們輸出add()返回的內容是什麼?
可不可以返回多個值?
可以自己試試!
3、參數
想一個問題,我們add這個函數只是固定的計算了1+2,如果我們想要計算用戶輸入的值怎麼辦?這裡就用到了參數。
3.1位置參數(必須傳入值,一一對應,多了,少了都會報錯。)
a =int(input("輸入a:"))
b =int(input("輸入b:"))
def add(x,y):
return x+y
c = add(a,b)
print(c)
add(a,b):將a,b傳遞到add()函數中,a對應的是x,b對應的是y。x,y是形式參數,a,d是實際參數。a,b和x,y是一一對應的關係。
另:我們也可以這樣傳參add(1,2)位置傳參,也可以add(x=1,y=b)關鍵字傳參,也可以混合使用,但是位置傳參在前,關鍵字傳參在後。add(x=1,b)不可以。
3.2默認參數(可傳,可不傳)
默認參數:當傳入的有值時我們就是用傳入的值,當沒有傳入值時,我們可以使用默認值。
注意:默認參數必須在位置參數的後面。
a =int(input("輸入a:"))
b =int(input("輸入b:"))
def add(x,y=10):
return x+y
c = add(a)
print(c)
d = add(a,b)
print(d)
add(x,y=10):中的y=10就是默認參數,當傳入2個參數時,就不使用默認值,當只傳入一個參數的時候,那麼第二個參數就會傳入默認值,即10。
3.3動態參數
動態參數:當我們不確定函數需要傳遞的參數數量時,比如計算多個數的和,我們就可以用到動態參數。
def add(*args):
sum = 0
for i in args:
sum +=i
return sum
add(1,2,3)
add(1,1,1,1,1,1)
*args:在參數名之前加一個*號之後,就可以傳遞任意數量的參數,args這個名字可以換,沒有問題,但是相當於大家都統一這樣寫,這樣大家一看就知道,動態參數的位置需要放在默認參數的前面,這句話不是說一定要有默認參數,如果有需要放在默認參數前。
def add(**kwargs):
print(kwargs)
add(a=1,b=2,c=3)
add(a=1)
**kwargs:加上兩個*以關鍵字的形式傳遞,和我們的字典一樣a:1,b:2,c:3,輸出的是一個字典。
注意:如果兩者都需要,*args需要放在**kwargs的前面
總結:傳遞參數的順序:位置參數,*args,默認參數,**kwargs,沒有其中任意一個參數,也還是這個順序。當有動態參數時,默認參數必須以關鍵字的形式傳遞。
3.4動態傳遞列表和字典。
list = [1,2,3]
def add(*args):
print(args)
如果我們直接add(list),那麼我們輸出的也是一個列表,即沒有分開
我們想達到add(1,2,3)這樣的效果,只需要這樣:add(*list)
同理:有這樣一個字典dict={"name":"wmm","sex":"nan"}
只需要add(**dict)即可。
另:通常還有人將函數叫為方法,函數和方法是一個東西,不過我們通常將內置函數叫函數,自定義的叫方法,這個無所謂。
誤區:
這個誤區曾經在廖雪峰老師的部落格中看到,覺得很有意思,在這裡分享給大家。
def add(list=[])
list.append(1)
print(list)
add()#結果:[1]
add()#結果:[1,1]
add()#結果:[1,1,1]
我們發現,每次調用的時候都會在原來的list中添加,而我們想要的效果是只添加成[1]
我們可以這樣寫:
def add(list=[])
if list !=None:
list =[]
list.append(1)
print(list)
即可。
三、全局變數和局部變數
x = 1
def fun():
print(x)
這裡的x為全局變數,在函數中可以引用到
def fun():
x=1
print(x)
報錯:這裡x為局部變數,在全局中引用不到,所以報錯。
x = 1
def fun():
x+=10
print(x)
報錯:我們想要在函數中改變改變全局變數的值,需要用global聲明他是一個全局變數。
即修改成:
x = 1
def fun():
global x
x+=10
print(x)