Python函数Day1
一、函數的初識
函數的定義:函數最主要的目的是封裝一個功能,一個函數就是一個功能
?
定義函數的格式:
def 函數名():
函數體
?
def my_len():count = 0s1 = 'hahahahaha'for i in s1:count += 1def 關鍵字,定義函數
函數名: 命名跟變量的命名相似,注重描述性
函數體:代碼塊
?
執行函數的格式:
函數名()
my_len() # 執行函數(函數的執行者)?
函數的優點:① 減少代碼的重復率 ?、?增強代碼的閱讀行(根據函數名的描述知道其函數的功能)
?
工作中,函數中盡量不要出現print(print用于調試時使用)
?
二、函數的返回值 return
return的作用:
① 函數中如果遇到return,直接結束函數
② 給函數的執行者返回值 (? 函數的執行者即函數名()? )
?
return 無返回值,默認會返回None
def my_len():passprint(my_len())# 結果 None?
return 單個值,返回的值的類型就是值的數據類型,原封不動的返回
def fun():return 'haha' print(fun(),type(fun()))# 結果 haha <class 'str'>?
return 多個值,返回的是由值組成的元素,所有的值都是元組的一個元素
def fun():return 1,'ha',[1,2,'a'] print(fun(),type(fun()))# 結果 (1, 'ha', [1, 2, 'a']) <class 'tuple'>?
三、三元運算
三元運算:只針對與簡單的 if...else 結構才能使用,不能有 elif
① 為真的結果 if 判定條件 else 為假時的結果
def num_max(x,y):return x if x > y else y # 假如x>y就返回x,否則返回yprint(num_max(100,105))# 結果 105?
② 判斷條件 and 為真的結果 or 為假的結果
def num_max(x,y):return x > y and x or y # 假如x>y成立就返回and后面的,否則返回or后面的print(num_max(10,5))# 結果 10?
四、函數的參數
Python中對函數參數的傳遞采用 傳引用 的方式,即實參和形參都是引用,它們指向同一個對象實體(換言之,即形參是實參的淺拷貝)
def test_len(s):count = 0for i in s:count += 1return count test_len('abcdefgh')以上的過程稱為傳遞參數,'abcdefgh'這個就是調用函數時從傳遞的參數,傳遞參數可以傳遞多個參數
函數的參數分為形參與實參,形參是形式參數,實參是實際參數
形參: 在定義函數的時候它只是一個形式,表示這里有參數。例如:s
實參:'已經定義從初始化好的數據,實際要交給函數的內容。例如:'abcdefgh'
?
五、實參
調用函數時,可以指定兩種類型的參數:位置參數和關鍵字參數
?
① 位置參數:形參和實參必須按照個數和順序一一對應
def num_max(x,y):return x,ynum_max(10,20)?
② 關鍵字參數
def num_max(x,y,z):return x,y,zret = num_max(y=20,z=100,x=10) print(ret)# 結果 (10, 20, 100)?
③ 位置參數、關鍵字參數混合使用
注意:關鍵字參數一定要放在位置參數的后面,并且與形參一一對應
def num_max(a,b,x,y):return a,b,x,yret = num_max(5,10,y=200,x=100) print(ret)# 結果 (5, 10, 100, 200)?
六、形參
① 位置參數:按照順序一一對應
def fun(x,y,z):return x,y,z?
② 默認參數:
如果形參設置了默認參數,該值被傳遞了就使用傳遞的值,如果沒傳遞值,就是使用默認的值。
給其傳值,會將原默認參數覆蓋掉,不傳值不報錯,使用的時默認值
默認參數一般設置的是不可變數據類型(str、int、bool)
def fun(x,y=1):return x*yfun(5) # 只傳遞給x,使用y的默認值 fun(5,2) # x和y都傳遞,不使用yde默認值?
默認參數設置的是可變數據類型,每次使用他始終指向的是同一個,都是同一個內存地址
def fun(x,li = []):li.append(x)return lil1 = fun(5) print(l1,id(l1)) l2 = fun(10) # 在li的列表上追加值,原本的值還存在,它們都是指向同一個內存地址 print(l2,id(l2))# 結果 [5] 1798941451208 [5, 10] 1798941451208?
轉載于:https://www.cnblogs.com/st-st/p/9482160.html
總結
以上是生活随笔為你收集整理的Python函数Day1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天天沉迷于皇上本宫的都是sb
- 下一篇: websocket python爬虫_p