• 我的python菜鸟之路9


    ------------------------------函数小高级------------------------------

    1.1函数赋值

    • 函数也相当于一个变量可以新定义一个变量用于接收函数
    def funs():
        return (1,2,3)
    a = funs
    print(a())
    #与funs是等价的
    
    • 同样也可以当做一个名称在列表中
    def funs():
        print (1,2,3)
    a = funs
    list_funs = [funs,funs,funs]
    list_funs[1]()
    #输出与funs()等价
    
    • 同样也可以参与循环
    def funs():
        print (1,2,3)
    a = funs
    list_funs = [funs,funs,funs]
    for item in list_funs:
        v = item()
        print(v)
    '''
    注意返回值None
    输出的结果为
    3
    None
    1 2 3
    None
    1 2 3
    None
    '''
    
    • 放在字典中做字典的值也是可行的,虽然函数也可以做字典的键,但一般不这么做
    def funs():
        print (1,2,3)
    def bars():
        print(666)
    info = {'k1':funs,'k2':bars}
    info['k1']()
    info['k2']()
    
    • 函数名当做变量来使用
    #练习1
    def funs():
        print(1,2,3)
    list_funs = [funs(),funs()]
    print(list_funs)
    '''
    输出结果呢为 
    1 2 3
    1 2 3
    [None, None]
    '''
    #练习2
    def funs():
        return(1,2,3)
    list_funs = {'k1':funs,'k2':funs()}
    print(list_funs)
    '''
    输出结果为
    {'k1': <function funs at 0x030D87C0>, 'k2': (1, 2, 3)}
    '''
    #练习3
    def funs(arg):
        v1 = arg()
        print(v1)
    def show():
        print(666)
    result = funs(show)
    print(result)
    '''
    输出结果为
    666
    None
    None
    '''
    
    • 函数当做参数使用
    #选择语音服务类
    def funs():
        print('语音服务')
    def bars():
        print('话费查询')
    def bas():
        print('流量服务')
    def show():
        print('游戏服务')
    info = {'f1':funs,'f2':bars,'f3':bas,'f4':show}
    choice = input('请选择所需服务:')
    function_name = info.get(choice)
    print(function_name)
    if function_name:
        function_name()
    else:
        print('输入错误')
    

    ------------------------lambda表达式--------------------------------

    • lambda表达式:为了解决简单函数的情况,默认情况下会 return
    • lambda表达式应用类型
    func = lambda :100
    func1 = lambda x1:x1*10
    func2 = lambda *args,**kwargs:len(args) + len(kwargs)
    
    • lambda表达式与三元运算混用,求两者的最大值
    funs = lambda n1,n2 : n1 if n1 > n2 else n2
    
    • 注意return的用法
    USER_LIST = [] 
    func1 = lambda x:USER_LIST.append(x) #此处由于修改列表不生成新的变量,所以此处没有返回值
    v1 = func1('yang')
    print(v1)
    print(USER_LIST)
    '''
    结果为:
    None
    ['yang']
    '''
    
    • 注意列表的返回值:列表的所有方法基本上所有return值为None
    v1 = [1,2,3,4]
    result = v1.append(2)
    print(result)
    print(v1)
    '''
    其结果为:
    None
    [1, 2, 3, 4, 2]
    '''
    
    • lambda表达式复杂化
    funs = [lambda x:x.strip(), lambda y:y+99,lambda x,y:x+y]
    
  • 相关阅读:
    《逆向工程核心原理》——通过调试方式hook Api
    《逆向工程核心原理》——代码注入
    《逆向工程核心原理》——DLL注入与卸载
    《逆向工程核心原理》Windows消息钩取
    windows回收站无法设置
    windbg安装pykd记录
    博客园添加萝莉小人
    ImportError: No module named site
    *CTF——Re复现
    ida远程调试Linux文件
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13200249.html
Copyright © 2020-2023  润新知