python - 函數的定義和使用

函數的定義和使用

1 def test(x):       # x表明形參
 2     '''
 3     2*x+1
 4     :param x:整形數字
 5     :return:返回計算結果
 6     '''
 7     y = 2*x+1
 8     return y
 9 p = test(3)     # test()表示運行名爲test函數,3表明實參,給x進行賦值
10 print(p)

函數的定義:code

  • def: 表示函數的關鍵字
  • 函數名: 函數的名稱, 根據函數名調用函數
  • 函數體: 函數中進行一系列的邏輯計算
  • 參數: 爲函數執行完畢後, 能夠給調用者返回數據

一. 爲何要用函數?

  1. 減小代碼量
  2. 保持一致性
  3. 易維

二. 函數的參數

函數有三種不一樣的參數:遞歸

  • 普通參數
    # ######### 定義函數 #########it

    # name 叫作函數func的形式參數,簡稱:形參
      def func(name):
          print name
    
      # ######### 執行函數 ######### 
      #  'wupeiqi' 叫作函數func的實際參數,簡稱:實參
      func('wupeiqi')
  • 默認參數class

    def func(name, age = 18):
    
          print "%s:%s" %(name,age)
    
      # 指定參數
      func('wupeiqi', 19)
      # 使用默認參數
      func('alex')
    
      注:默認參數須要放在參數列表最後
  • 動態參數 *argstest

    def func(*args):
    
          print args
    
    
      # 執行方式一
      func(11,33,4,4454,5)
    
      # 執行方式二
      li = [11,2,2,3,3,4,54]
      func(*li)
  • 動態參數 **kwargs匿名函數

    def func(**kwargs):
    
          print args
    
    
      # 執行方式一
      func(name='wupeiqi',age=18)
    
      # 執行方式二
      li = {'name':'wupeiqi', age:18, 'gender':'male'}
      func(**li)

三. 函數的變量

函數的變量可分爲 全局變量和局部變量變量

全局變量(大寫)lambda

定義:沒有縮進的變量程序

局部變量(小寫)

定義:子程序下定義的變量

name = 'lhf'                 # 這裏就指全局變量


def change_name():
    name = '帥了一比'      # 這裏就指局部變量
    print('change_name', name)


change_name()
print(name)    

結果
change_name 帥了一比
lhf

global和nolocal

global聲明是全局變量,nolocal指定上一級變量

未聲明全局變量

x = 99
def func():
    x = 88
func()
print(x)     #輸出99

聲明全局變量

x = 99
def func()
    global x
    x = 88
func()
print(x)    #輸出88

未指定上一級變量

def func():
    count = 1
    def foo():
        count = 12
    foo()
    print(count)
func()    #輸出1

指定上一級變量

def func():
    count = 1
    def foo():
        nonlocal count
        count = 12
    foo()
    print(count)
func()     #輸出12

四. 遞歸函數

ps: 用的好的都是大牛~

就是函數本身調用本身

特性:

  1. 必須有一個明確的結束條件,

  2. 每次進入深一層遞歸時,問題規模都應有所減小

    def calc(n):
         print(n)
         if int(n / 2) == 0:
             return n # 當上面的條件成立後一個真值,返回到函數
         res = calc(int(n / 2))    
         print(n,res) 
         return res # 返回res的值,要將真值一層一層傳遞回去
    
     calc(10)

五. lamabda匿名函數

lambda用法,冒號以前的是入參,冒號以後的是表達式,返回的值,最簡單的函數

print [(lambda x:x*x)(x)for x in range(11)]
#結果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#結果:9
g=lambda x:x*x
print g(4)
#結果:16
相關文章
相關標籤/搜索