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!

posted @ 2018-11-17 12:05  dinghanhua  阅读(220)  评论(0编辑  收藏  举报