首页 > 技术文章 > def函数默认值,lambda表达式

Mjonj 2017-08-23 15:11 原文

def 默认参数,默认参数可以多个,一定要放在参数尾部

def driver(t,name='默认值'):
    temp=name+'还是个孩子 '
    return temp

print(driver('mornezh','budong '))#budong 还是个孩子 ,前面没啥用,t布鞋,函数可为空,默认后面参数

 

def 动态参数 *,**

def driver(*t):

    print(t,type(t))

print(driver(1,(1,2,3),[2,4,5],{'2':2,"32":'24'}))  #(1, (1, 2, 3), [2, 4, 5], {'32': '24', '2': 2}) <class 'tuple'>,将字典和列表放入一个元祖里面

====两星============================
def driver(**t):

    print(t,type(t))

print(driver(k1=123,k2=456))#{'k1': 123, 'k2': 456} <class 'dict'>

 

 

 

动态参数实例

 

def driver(p,*y,**t):

    print(p,type(t))
    print(y, type(t))
    print(t, type(t))

print(driver(123,243,5353,k1=123,k2=456))#
'''123 <class 'dict'>
(243, 5353) <class 'dict'>
{'k2': 456, 'k1': 123} <class 'dict'>
默认第一个参数放在第一个位置,后面两个参数放在第二个位置,带有等于的分别列入字典里'''

 

 

局部变量和全局变量

在函数里面的变量叫局部变量和外面没有任何关系  

global
x=50
def func():
    global x
    print ('x is', x)
    x = 2
    print ('Changed local x to', x)

func()
print ('Value of x is', x)
#x is 50           调用函数 传入50,然后全局变量设置为2
#Changed local x to 2
#Value of x is 2

 


========
计算字母数字空格出现的次数
def fun(q):
    a1=0
    apance=0
    dight=0
    othat=0
    for i in q:
        if i.isdigit(): #字数出现的次数
            dight+=1
        elif i.isspace():#空格出现的次数
            apance+=1
        elif i.isalpha(): #字母出现的次数
            a1 += 1

        else:
            othat+=1
    return (a1,apance,dight,othat)
print(fun('a sd98 12@'))#(3, 2, 4, 1) 字母出现3词,空格出现两次,数字出现3词,其它出现0词

 判断文中有没有空格,如果有返回False

1 def has(args):
2     ret=True
3     for i in args:
4         if i.isspace():
5             ret=False
6     return ret
7 
8 result=has("sad12_ daf")
9 print(result)

判断一个列表长度 如果大于2,返回前两个

def fun(arg):
    if len(arg)>2:
        r=arg[0:2]
        return r
    return arg


li=[123,122,52]  #[123, 122]
print(fun(li))


参数传递,列表变化

def fun(arg):
    ret=[]
    for i in range(len(arg)):
        if i%2==1:
            ret.append(arg[i])
        else:
            pass
    return  ret
li=[11,22,33,44,55,66,77,88,99]
r=fun(li)
print(r)  #传参数,索引会变动,需要重新建立列表,加入

 

 

lambda表达式

def fun(a1,a2):
    return a1+a2


fun1= lambda a1,a2:a1+a2

print(fun(4,5),fun1(4,5))##9 9

 



推荐阅读