1. 程式人生 > >python入門15 函式

python入門15 函式

 函式

1 python內建函式

2 匿名函式lambda

3 自定義函式 def functionname(arg):...

 

#coding:utf-8
#/usr/bin/python
"""
2018-11-11
dinghanhua
函式
"""

'''內建函式'''
print(round(2.345,2)) #四捨五入,保留2位小數;絕對值
print(abs(-23.333)) #絕對值


'''匿名函式 lambda'''
lambda x: x**2 #匿名函式
print(list(map(lambda
x:x**3,(1,2,3)))) #x的3次方 print(list(filter(lambda x:x%2==0 , [1,2,33,44]))) #取偶數

 

'''自定義函式'''

'''函式定義'''
def funcname(arg,sign):
    '''函式說明'''
    print('arg=%s,sign=%s'%(arg,sign))
    return

'''帶預設值的函式'''
def funcname2(name,nation = 'china'): #第二個引數帶預設值,預設引數放到最後
    print('name is %s,nation is %s
'%(name,nation)) return name,nation '''函式呼叫''' #不帶引數名,按順序賦值 res = funcname('wegjoweg','no sign') print('沒有返回值,返回:',res) #指定引數名,順序可打亂 funcname(sign = 2,arg = 'ok') #預設引數未傳參 res = funcname2('小明') print(res) #預設引數傳參 res = funcname2('peter','Americia') print('返回多個值,返回的是一個tuple:',res)

 

'''
預設引數=list 出現的異常''' def func(val,list=[]): list.append(val) return list list1 = func(10) list2 = func('abc',[]) list3 = func('2') print(list1,list2,list3) #[10, '2'] ['abc'] [10, '2'] list1和list3同一個地址,均指向預設引數的記憶體地址 #規避以上問題,list=None def func(val,list=None): if list is None: list = [] #每次建立一個 list.append(val) return list list1 = func(10) list2 = func('abc',[]) list3 = func('2') print(list1,list2,list3) #[10] ['abc'] ['2']

 

'''可變引數*arg,取出來是元組'''
def func(name,*other):
    print('name=%s,other=%s'%(name,other))

func('john',18,'一年級')
func('peter',20)


'''可變引數**arg,取出來是字典'''
def func(name,**other):
    print('name=%s,other=%s'%(name,other))

func('john',age=18,grade='一年級')
other = {'age':18,'grade':'grade 1'}
func('peter',**other)

 

the end!