Python學習 - 基本函數

原文閱讀python

語句的執行順序

學C的時候,寫函數常會先去找main函數,一級一級的調用看下來,再在適當的一個函數裏,調用須要的函數,傳入參數,得到數據。Python有點出入,一個.py文件,從上往下執行語句,main函數就是開始語句。好比一個遞歸的函數數組

def fact(n):
    if n == 1:
        return 1;
    return n * n + fact(n - 1)

print fact(4)

這個是計算1 * 1 + 2 * 2 + 3 * 3 + ... + n * n(markDown怎麼寫平方 - -#),遞歸調用,假設文件名爲a.py,在Terminal下運行python a.py,就輸出數據了。固然還能增長另外的函數和執行語句。函數

也能給函數指定別名(能夠理解爲函數指針):spa

def fact(n):
    if n == 1:
        return 1;
    return n * n + fact(n - 1)
z = fact
print z(4)

函數返回值

看一個函數,輸出一個數的絕對值,若是輸入的不是數字,則報錯:指針

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x > 0:
        return x
    elif x == 0:
        pass
    else:
        return -x
print my_abs(5)
print my_abs(0)
print my_abs(-5)
print my_abs('a')

輸出:
code

一個函數也能返回多個值:遞歸

import math

def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny
a,b = move(100, 100, 60, math.pi / 6)
print a, b

輸出:
ci

函數的參數

默認參數

定義一個函數,計算x的n次方:get

def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

調用power(5,2),就能獲得25。若是這個函數主要是爲了計算平方,能夠寫成:it

def power(x, n = 2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

調用power(5),也能獲得25。計算3次方power(5, 3),默認參數能夠節省輸入,預防一些錯誤。

可變參數

Python中函數的參數個數是可變的。具體是怎麼樣呢?好比咱們要計算a * a, b * b, c * c
1、def func(a, b ,c):,函數參數是3個整數,調用時func(a, b, c)

2、def func(numbers):,參數是一個list或者tuple,調用時func([a,b,c])func((a, b ,c))

而可變參數的函數是def func(*numbers):,調用時候func(a, b, c),能夠寫成:

def func(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

關鍵字參數

可變參數是傳入參數到函數後,函數自動將參數組裝成一個tuple,關鍵字參數則是將參數組裝成key-value鍵值對。好比:

def person(name, age, **kw):
    print 'name:', name, 'age:', age, 'other:', kw

調用函數:

>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

這樣,函數參數就有了list類型的參數。還能夠這麼調用

>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **kw)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

參數組合

能夠將各類參數組合用,順序必須是:必選參數、默認參數、可變參數和關鍵字參數。好比:

def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

*args爲可變參數,接受的是tuple,**kw是關鍵字參數,接受的是一個dict。

相關文章
相關標籤/搜索