python之函數初識

1、函數的初識
一、如何定義函數:
def 函數名():
  代碼...app

例如:
def my_len():
  l = [1, 2, 3, 4]
  count = 0
  for i in l:
    count += 1
  print(count)函數

二、函數的優勢:
1,減小代碼的重複率。
2,加強代碼的閱讀性。post

三、函數究竟是什麼?
函數最主要的目的:封裝一個功能。spa

四、函數如何調用:函數名 ()
my_len()blog

五、總結
定義:def 關鍵詞開頭,空格以後接函數名稱和圓括號(),最後還有一個":"。
   def 是固定的,不能變,他就是定義函數的關鍵字。
   空格 爲了將def關鍵字和函數名分開,必須空,固然你能夠空2格、3格或者你想空多少都行,但正常人仍是空1格。
   函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名能夠隨便起,但咱們給函數起名字仍是要儘可能簡短,並能表達函數功能。
   括號:是必須加的!字符串

註釋:每個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以加強代碼的可讀性。class

調用:就是 函數名() 要記得加上括號。變量

2、函數的返回值:return
一、函數中若是遇到retrun,則直接結束函數。數據類型

二、給函數的執行者返回值。
1,不寫return和只寫return              返回None
2,return 單個值                              原封不動的返回(返回的數據類型也一致)
3,return 多個值                              返回一個元組,全部的返回值做爲元組的每個元素總結

(1)不寫return
def func1():
  print(111)
  print(222)
print(func1())      #111 222 None

(1-2)只寫return
def func1():
  print(111)
  print(222)
  return
print(func1())     #111 222 None


(2)return 單個值
def fun1():
  a = 1
  b = 'hello'
  c = [1,2,3]
  return a
print(fun1())      # 1

(3)return 多個值
def fun1():
  a = 1
  b = 'hello'
  c = [1,2,3]
  return a,b,c
print(fun1())      #(1, 'hello', [1, 2, 3])

注意:工做中,函數中儘可能不要出現print,這裏只是爲了展現函數的用法才使用的

 


3、函數的參數
一、用一個例子簡單瞭解一下:
#函數定義
def mylen(s):
  """計算s的長度"""
  length = 0
  for i in s:
    length += 1
  return length

#函數調用
str_len = mylen("hello world")
print('str_len : %s' %(str_len))

這裏咱們要告訴mylen函數要計算的字符串是誰,這個過程就叫作傳遞參數,
簡稱傳參,咱們調用函數時傳遞的這個「hello world」和定義函數時的s就是參數。

這個「hello world」被稱爲實際參數,由於這個是實際的要交給函數的內容,簡稱實參。

定義函數時的s,只是一個變量的名字,被稱爲形式參數,由於在定義函數的時候它只是一個形式並非真正的數據,
表示這裏有一個參數,簡稱形參。 

 

二、實參
1,位置參數:按照順序,一一對應


def func1(x,y):
  print(x,y)
func1(1,2)      #位置參數,1對應傳給x,2對應傳給y


2,關鍵字傳參:能夠不按照順序,可是必須一一對應
def func1(x,y):
  return x+y
print(func1(y=100,x=99))      #關鍵字參數,咱們寫實參的時候直接聲明瞭形參y對應100,x對應99

3,混合傳參:關鍵字參數必定要在位置參數後面
def func1(a,b,x,y):
  return b+y

print(func1(100,200,y=100,x=99))    #300

三、形參
1,位置參數 按照順序,一一對應
def func(x,y,z):
  print(x,y,z)
func(1,2,3)


2,默認參數:給其傳值,將原默認參數覆蓋掉,不傳值,不報錯,使用默認值。
應用場景:不常常改變的參數,可是一直在用。
def func1(x,y,a=666):
  print(x,y,a)
func1(1,2)              #1 2 666
func1(1,2,333)       #1 2 333

注意:
默認參數通常設置爲不可變的數據類型(str,int,tuple等),
若默認參數設置爲可變的數據類型(list,dict等),那麼執行一次後,這個可變的數據類型它始終用的是同一個。
def fun1(x,l1=[]):
  l1.append(x)
  return l1

res = fun1(20)
print(res,id(res))       #[20] 2192007779592

res1 = fun1(100)
print(res1,id(res1))   #[20, 100] 2192007779592


四、參數總結
實參:
位置參數:按照順序,一一對應
關鍵字參數:能夠不按照順序,可是必須一一對應
混合參數:關鍵字參數必定要在位置參數後面

形參
位置參數:按照順序,一一對應
默認參數:給其傳值,將原默認參數覆蓋掉,不傳值,不報錯,使用默認值

 

小知識點:只針對於簡單的if else 這樣的結構,才能夠使用。
def fun(x,y):
  if x > y:
    return x
  else:
    return y
print(fun(1,2))

 

上面代碼能夠下成下面的代碼:
def fun(x,y):
  return x if x > y else y
print(fun(1,2))

相關文章
相關標籤/搜索