zoukankan      html  css  js  c++  java
  • 函数名的使用与f-strings字符串格式化

    一. 函数名的运用

    函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量

    函数名的内存地址

    def func():   
        print("呵呵")
    print(func)
    
    结果: <function func at 0x1101e4ea0>
    

    函数名可以赋值给其他变量

    def func():   
        print("呵呵")
        print(func)
    a = func    # 把函数当成一个值赋值给另一个变量
    
    a()     # 函数调用 func()
    

    函数名可以当做容器类的元素

    def func1():   
        print("呵呵")
    def func2():   
        print("呵呵")
    def func3():   
        print("呵呵")
    def func4():  
         print("呵呵")
    
    lst = [func1, func2, func3]
    for i in lst:  
         i()
    

    函数名可以当做函数的参数

    def func():   
        print("吃了么")
    def func2(fn):   
        print("我是func2")   
        fn()    # 执行传递过来的fn   
        print("我是func2")
    func2(func)     # 把函数func当成参数传递给func2的参数fn.
    

    函数名可以作为函数的返回值

    def func_1():   
        print("这里是函数1")   
        def func_2():       
            print("这里是函数2")   
        print("这里是函数1")   
        return func_2
    fn = func_1()  
    # 执行函数1.  函数1返回的是函数2, 这时fn指向的就是上面函数2
    fn()    # 执行func_2函数
    

    二.f-strings字符串格式化

    f-strings 是python3.6开始加入标准库的格式化输出新的写法,这个格式化输出比之前的%s 或者 format 效率高并且更加简化,非常的好用,相信我,你们学完这个之后,以后再用格式化输出这就是你们唯一的选择。

    简单举例

    他的结构就是F(f)+ str的形式,在字符串中想替换的位置用{}展位,与format类似,但是用在字符串后面写入替换的内容,而他可以直接识别。碉堡了。

    name = '宝元'
    age = 18
    sex = '男'
    msg = F'姓名:{name},性别:{age},年龄:{sex}'  # 大写字母也可以
    msg = f'姓名:{name},性别:{age},年龄:{sex}'  
    print(msg)
    '''
    输出结果:
    姓名:宝元,性别:18,年龄:男
    '''
    

    任意表达式

    他可以加任意的表达式,非常方便:

    print(f'{3*21}')  # 63
    
    name = 'barry'
    print(f"全部大写:{name.upper()}")  # 全部大写:BARRY
    
    # 字典也可以
    teacher = {'name': '宝元', 'age': 18}
    msg = f"The teacher is {teacher['name']}, aged {teacher['age']}"
    print(msg)  # The comedian is 宝元, aged 18
    
    # 列表也行
    l1 = ['宝元', 18]
    msg = f'姓名:{l1[0]},年龄:{l1[1]}.'
    print(msg)  # 姓名:宝元,年龄:18.
    

    也可以插入表达式

    可以用函数完成相应的功能,然后将返回值返回到字符串相应的位置

    def sum_a_b(a,b):
        return a + b
    a = 1
    b = 2
    print('求和的结果为' + f'{sum_a_b(a,b)}')
    

    多行f

    xname = 'barry'
    age = 18
    ajd = 'handsome'
    
    # speaker = f'''Hi {name}.
    # You are {age} years old.
    # You are a {ajd} guy!'''
    
    speaker = f'Hi {name}.'
              f'You are {age} years old.'
              f'You are a {ajd} guy!'
    print(speaker)
    

    其他细节

    print(f"{{73}}")  # {73}
    print(f"{{{73}}}")  # {73}
    print(f"{{{{73}}}}")  # {{73}}
    m = 21
    # ! , : { } ;这些标点不能出现在{} 这里面。
    # print(f'{;12}')  # 报错
    # 所以使用lambda 表达式会出现一些问题。
    # 解决方式:可将lambda嵌套在圆括号里面解决此问题。
    x = 5
    print(f'{(lambda x: x*2) (x)}')  # 10
    
  • 相关阅读:
    HDU 1175 连连看 (DFS+剪枝)
    CF702F T-Shirts
    UVA12538 Version Controlled IDE
    P2605 [ZJOI2010]基站选址
    P3835 【模板】可持久化平衡树
    CF915E Physical Education Lessons
    P3701 「伪模板」主席树
    P1198 [JSOI2008]最大数
    P3466 [POI2008]KLO-Building blocks
    P3919 【模板】可持久化数组(可持久化线段树/平衡树)
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11620114.html
Copyright © 2011-2022 走看看