python函數學習筆記

1,函數名賦值給變量

def func(x):
    return x

f=func      #把函數名賦值給變量

print(f(1)) #用變量調用這個函數

再來個PHP的

<?php
function func($x){

 echo $x;
}

$f='func';
$f(1);
?>

效果一樣

2,函數多個默認參數的設置

def func(x,y='y',z='z'):
    return x+y+z

print(func('a',z='c')) #跳過y參數直接設置z參數,輸出ayc

php 的

function func($x,$y='y',$z='z'){

 echo $x.$y.$z;
}

func('a',$z='c');
//輸出acz 而不是想要的ayc,證明php參數必須順序對應,即使func('a',$b='b',$c='c')這樣,依舊按照順序輸出:abc,這點php解釋器做的不怎麼樣,差評

3,python 函數返回多個值,這點php是做不到的,php 只能返回一個

def func(name,age=19):

    return name,age


print(func('lianf'))
#輸出('lianf', 19),其實是tuple 類型的一個不可變列表

可變的參數

def func(name,*km):

    return name,km


print(func('lianf',1,2,3,4,6))
#輸出('lianf', (1, 2, 3, 4, 6)),可變的部分是一個tuple,可以用for x in km 循環出來如下:
def func(name,*km):

    s=name+":"
    for x in km:
        s=s+x
    return s


print(func('lianf',"a","b","c"))
#輸出 lianf:abc,靈活,牛逼,慢慢喜歡上了這個語言

4,關鍵字(key)參數,這個也很牛逼,可以傳不定長的字典dic也就是java 裏的map (key-values )鍵值對作爲參數

def func(name,**km):

    return name,km


print(func('liangf',a=1,b="bb"))
#輸出('liangf', {'a': 1, 'b': 'bb'}),注意{} 注意這個大括號牛逼!!!

命名關鍵字參數

def func(name,*,b,c):


    return name,b,c


print(func('lianf',b=1,c='a'))
#輸出('lianf', 1, 'a')

在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

def func(name,age=18,*a,b,c,**k):


    return name,age,a,b,c,k


print(func('lianf',1,2,3,b=1,c='a',n='n',m='m'))
#輸出:('lianf', 1, (2, 3), 1, 'a', {'n': 'n', 'm': 'm'})

*args是可變參數,args接收的是一個tuple;

**kw是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:

可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過args傳入:func((1, 2, 3));

關鍵字參數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過kw傳入:func({‘a’: 1, ‘b’: 2})。

使用*args和**kw是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。

命名的關鍵字參數是爲了限制調用者可以傳入的參數名,同時可以提供默認值。

定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*,否則定義的將是位置參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章