python基礎學習11—-函數

  • 2020 年 1 月 19 日
  • 筆記

一.函數的定義

def 函數名(參數列表):      函數體      return語句

return語句不寫或後邊不加任何對象即為return None

二.函數的參數

無參數

def func1():      print("沒有參數")

一個參數

def func1(a):     return a

多個參數

def func1(a,b,c):     return a+b+c

必須參數

  必須按照正確順序和數量傳入參數

def func1(name,age,job):     print("name:%s age:%d job:%s"%(name,age,job))  func1("sfencs",20,"IT")

關鍵字參數

def func1(name,age,job):     print("name:%s age:%d job:%s"%(name,age,job))  func1(age=20,name="sfencs",job="IT")

默認參數

默認參數必須放在必須參數的後面

def func1(name,age,job="IT"):     print("name:%s age:%d job:%s"%(name,age,job))  func1("sfencs",20)  func1("Alan",25,"teacher")

不定長參數

參數帶一個星號*

def func1(*args):      print(args)  func1(1,2,3,"sfencs")#(1, 2, 3, 'sfencs')以元組形式保存

參數帶兩個星號**

def func1(**kwargs):      print(args)  func1(age=20,name="sfencs",job="IT")#{'age': 20, 'name': 'sfencs', 'job': 'IT'}以字典形式保存

定義函數的參數時請以必須參數、默認參數、帶一個星號的不定長參數、帶兩個星號的不定長參數的順序定義形參

三.參數傳遞

不可變類型

def func1(a):      a=5  b=10  func1(b)  print(b)#輸出為10

可變類型

def func1(list1):      list1.append("sfencs")  list2=[1,2,3]  func1(list2)  print(list2)#[1, 2, 3, 'sfencs']list2會改變

四.變數作用域

L (Local) 局部作用域 E (Enclosing) 閉包函數外的函數中 G (Global) 全局作用域 B (Built-in) 內建作用域

按照L–>E–>G–>B的順序查找

內部作用域修改外部作用域變數

global

count=20  def function() :      global count#不加這句話會報錯      print (count)#20      count=5      print(count)#5  function()  print(count)#5

nonlocal 

修改嵌套作用域

def function1() :      count=20      def function2():          nonlocal count          count=5          print(count)#5      function2()      print(count)#r此時輸出為5,若不加nonlocal count則輸出為20  function1()

五.遞歸函數

#斐波那契數列為0,1,1,2,3,5,8,13,21,34.......  def fibon(n):      if n<=2 :          return n-1      return fibon(n-1)+fibon(n-2)  print(fibon(7))#輸出數列中第七個數,為8