定義函式的一般格式:
det function():
statements
return a
return用于退出函式,向呼叫方回傳一個運算式
函式可以不設定引數,也可以設定引數:
def function1(): print('大湘菜') def function2(a): print(a) function1() function2('小湘菜')
結果為:
大湘菜
小湘菜
python傳遞不可變物件,會生成一個新物件:
def change(a): print(id(a)) a = 2 print(id(a)) a = 1 print(id(a)) change(a)
結果為:
1460124477744 1460124477744 1460124478032
python傳遞可變物件,指向的是同一個物件:
def change(a): print(id(a)) a.append(4) print(id(a)) a = [1, 2, 3] print(id(a)) change(a)
結果為:
1874883986496 1874883986496 1874883986496
引數型別
1、必須引數:
def myprint(a): print(a) myprint('大湘菜')
結果為:
大湘菜
2、關鍵字引數,允許呼叫的引數順序和宣告時不一致:
def myprint(name, age): print('我的名字是' + name + ',年齡是' + age + '歲,') myprint(age='18', name='大湘菜')
結果為:
名字是大湘菜,年齡是18歲,
3、默認引數,如果沒有引數傳遞,使用默認引數:
def myprint(name, age='18'): print('我的名字是' + name + ',年齡是' + age + '歲,') myprint('大湘菜') myprint('小湘菜', '81')
結果為:
我的名字是大湘菜,年齡是18歲,
我的名字是小湘菜,年齡是81歲,
4、不定長引數,加了*,指的是函式比初宣告時使用了更多的引數,會以元組的形式存入:
def myprint(name, *otherinfo): print('我的名字是' + name) print(otherinfo) myprint('大湘菜') myprint('大湘菜', 1, 2, 3)
結果為:
我的名字是大湘菜
()
我的名字是大湘菜
(1, 2, 3)
加了**的引數會以字典的形式匯入
宣告函式時,*可以單獨出現,但是*后的引數必須用關鍵字傳入:
def myprint(name, *, age): print('我的名字是' + name) print('我的年齡是' + age) myprint('大湘菜', age='18')
結果為:
我的名字是大湘菜
我的年齡是18
匿名函式
一般形式:
lamda arg1, arg2…: expression
lamda的主體是一個運算式,而不是一個代碼塊,lamda擁有自己的命名空間,不能訪問全域命名空間的引數
info = lambda name, age: '姓名為' + name + ',年齡為' + age print(info('大湘菜', '18'))
結果為:
姓名為大湘菜,年齡為18
可以把匿名函式封裝到函式內:
def info(): return lambda name, age: '姓名為' + name + ',年齡為' + age returnFunction = info() # 回傳lamda匿名函式 print(returnFunction('大湘菜', '18'))
結果為:
姓名為大湘菜,年齡為18
強制位置引數
函式形參語法 / 用來指明函式形參必須使用指定位置引數,不能使用關鍵字引數的形式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458621.html
標籤:Python
下一篇:如何用 Python 識別車牌
