• python函数知识三 函数名的使用、格式化、递归


    12.函数名的使用

    函数是第一类对象

    1. 函数名可以当做值被赋值给变量
    def func():
        print(1)
        return
    a = func
    print(func)
    print(a)
    a()
    
    1. 函数名可以当做元素存放在容器中:
    def func():
        print(1)
        return
    lst = [func,func,func]
    for i in lst():
        i()
    
    1. 函数名可以当做函数的参数
    def func(f):
        f()
        return
    def foo():
        print(123)
        return
    func(foo)
    
    1. 函数名可以当做函数的返回值
    def func():
        def foo():
            print(123)
            return
        return foo
    a = func()
    a()
    

    13.格式化f:

    python3.6版本及以上可以使用

    #填充字符串
    s = f"你好{'啊'}"
    s1 = F"你好{'a'}"
    print(s)
    print(s1)
    
    #填充变量
    s = "不去"
    s2 = f"我去{s}"
    
    #填充计算公式
    s1 = f"{35+15}"
    print(s1)
    
    #填充表达式
    a = 10
    b = 20
    s1 = f"{a if a>b else b}"
    print(s1)
    
    #填充大括号
    s1 = f"{{{{{'我勒个去'}}}}}"#每两个显示一个
    print(s1)
    #{}大括号内可以放{},int,方法,函数,list,str,字典值
    #{}内不可放符号,要用引号引起来
    s1 = f"{{}{}{}{}}"
    print(s1)
    
    s1 = f"{print(123)}"
    print(s1)
    

    14.递归:

    特点:不断调用自己本身

    1. 死递归 -- 不断调用自己
    2. 有明确的终止条件

    满足以上两个条件是有效递归

    递:一直执行

    归:从结束开始往回退

    官方声明:最大层次 1000,实际测试998/997

    def func():
        print(123)
        func()
    func()    
    
    #猜数:
    '''
    1.宝元 18-2-2-2
    2.太白 18-2-2
    3.wusir 18-2
    4.alex 18
    '''
    
    def age(n):
        if n == 4:
            return 18
        else:
            return age(n+1)-2
    print(age(1))
    
    #分布解析:
    def age4(n):
        if n == 4:
            return 18
        
    def age3(n):
        if n == 4:
            return 18
        else:
            return age4(n+1)-2
        
    def age2(n):
        if n == 4:
            return 18
        else:
            return age3(n+1)-2
        
    def age1(n):
        if n == 4:
            return 18
        else:
            return age2(n+1)-2
    print(age(1))
        
    

    可变数据类型默认参数的坑:

    def func(a,lst = []):
        lst.append(a)
        return lst
    lst1 = func(10)
    lst2 = func(123,[])
    lst3 = func('aaa')
    
    print(lst1)
    print(lst2)
    print(lst3)
    '''
    结果:
    [10,'aaa']
    [123]
    [10,'aaa']
    '''
        
    

  • 相关阅读:
    Mysql上手
    Markdown精简版个人语法
    Sublime Text3插件管理
    Eclipse的快捷键
    使用github page 页面建博客中遇到的几个小问题
    2015 圣诞 限免软件分享
    啦啦啦-根据关键字进行字符串拷贝
    使用 sprintf swprintf 函数进行 unicode 与 ANSI 编码的转换
    c++11: 用户定义字面量
    通过模板获取数组长度
  • 原文地址:https://www.cnblogs.com/Onlywang/p/11215920.html
Copyright © 2020-2023  润新知