Python入门之函数调用——第3关:函数与函数调用 - 分清主次

任务描述

我们一般将字符串、列表等变量作为参数进行函数调用。但函数本身也是一个对象,所以我们也可以将函数作为参数传入另外一个函数中并进行调用。

本关的目标是让读者了解并掌握函数作为参数传入另外一个函数中并进行调用的相关知识。

相关知识

我们要学习函数与函数之间的调用,就应该对函数调用的顺序与参数有清晰的认识,我们将会从五种情况让读者了解并掌握函数与函数之间的调用的基本关系和联系。

第一种情况

程序代码如下:

def x(f):
    def y():
        print(1)
    return y

def f():
    print(2)

x(f)

运行结果:打印出无结果

分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以整个程序的返回值就为无结果。

第二种情况

程序代码如下:

def x(f):
    def y():
        print(1)
    return y

def f():
    print(2)

x(f())

运行结果:2

分析:因为第9行中的x(f())中的f()带括号,所以程序先调用执行f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中虽然也定义了y()函数,但是x(f)函数中没有调用执行y()函数,只是执行了return y。而y变量也没有值,所以调用执行x(f)函数没有产生任何结果。

所以该程序最终只输出了2

第三种情况

程序代码如下:

def x(f):
    def y():
        print(1)
    return y()

def f():
    print(2)

x(f)

运行结果:1

分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序只调用执行了x(f)函数,没有调用执行f()函数。x(f)函数中也定义了y()函数,并且返回是y()函数。所以程序调用执行了y()函数,输出结果是1

第四种情况

程序代码如下:

def x(f):
    def y():
        print(1)
    return y()

def f():
    print(2)

x(f())

运行结果:
2
1

分析:因为第9行中的x(f())中的f()带括号,所以程序先调用执行f()函数,先输出2。然后2作为参数传入到x(f)函数中,程序开始调用执行x(f)函数。x(f)函数中也定义了y()函数,并且返回是y()函数。所以程序也调用执行了y()函数,也输出了1

所以该程序先后输出了21

第五种情况

程序代码如下:

def x(f):
    def y():
        print(1)
        print(f())
    return y()

def f():
    #print(2)
    return 2

x(f)

运行结果:

1
2

分析:因为第9行中的x(f)中的f没有带括号,所以f只是一个普通的参数,所以程序先只是调用执行了x(f)函数。在x(f)函数中也定义了y()函数,而且返回值是y()函数,所以程序会调用执行y()函数。在y()函数中先是执行print(1)语句,输出1。接着执行print(f())语句,所以程序在这时也会调用执行f()函数,输出2

所以该程序先后输出了12

以上是对函数与函数之间调用的五种情况的探讨与分析,函数作为参数传入另外一个函数中并进行调用的情况有很多,我们需要时刻注意函数调用的相关要求与细节,才能正确使用函数。

编程要求

本关的编程任务是补全src/step3/func_ref.py文件的代码,实现相应的功能。具体要求如下:

  • 定义一个函数,要求实现圆的面积计算;
  • 根据输入的不同整数值的半径,调用函数计算,输出圆的面积。

测试说明

本关的测试文件是src/step3/func_ref.py,测试过程如下:

  1. 平台自动编译生成func_ref.exe;
  2. 平台运行func_ref.exe,并以标准输入方式提供测试输入;
  3. 平台获取func_ref.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step3/func_ref.py的样例测试集:

测试输入:
4
预期输出:
50.27

测试输入:
5
预期输出:
78.54

测试输入:
6
预期输出:
113.1

测试输入:
111
预期输出:
38707.56

开始你的任务吧,祝你成功!

你可以忘掉失败,但不能忘掉教训;你可以忘掉昨天,但不能忘记历史;你可以忘掉苦难,但不能忘却艰辛;你可以忘掉伤疤,但不能忘却耻辱。

如果你觉得这一关的内容对你有帮助,请你在下面点赞。

 

参考答案

#coding=utf-8

from math import pi as PI

n = int(input())

# 请在此添加代码,实现圆的面积计算,并输出面积结果
#********** Begin *********#
def area(n):
    area = PI * pow(n, 2)
    return round(area, 2)

print(area(n))

#********** End **********#

 

### 回答1: 在编程中,函数是一个非常重要的概念。函数可以将一段代码封装起来,使得代码更加模块化和易于维护。同时,函数也可以被多次调用,从而提高代码的复用性。 在使用函数时,我们需要分清主次。首先,我们需要确定函数的主要功能,也就是函数的核心逻辑。其次,我们需要考虑函数的调用方式,包括传入参数和返回值。最后,我们需要注意函数的命名规范和注释,以便其他人能够理解和使用我们的代码。 总之,函数是编程中非常重要的一部分,我们需要认真对待函数的设计和使用,以提高代码的质量和可维护性。 ### 回答2: 第四篇章的主题是“函数函数调用——分清主次”,在突破第四的过程中,需要学会如何理解函数的含义,以及函数调用的原理。同时,需要学会如何正确地设计函数的输入、输出参数,以及如何进行函数调用操作。 本主要内容有: 1.什么是函数 函数是一段完成特定任务的代码,它可以实现代码重复使用,使得代码更加简洁高效。函数可以进行输入参数的定义和输出参数的返回,从而帮助实现更为灵活和高效的编程操作。 2.如何定义函数 函数的定义包括函数的名称、函数的输入参数、函数的输出参数以及函数的具体实现代码。在定义函数时,需要注意函数名称的唯一性和描述性,输入、输出参数的类型和名称应该明确清晰,函数代码的实现应该遵循“输入即输出”、“分步处理”的原则。 3.如何调用函数 调用函数时需要注意当前程序所在位置和函数的实际调用方式,需要明确调用的函数类型和参数类型并进行正确的传递,同时,还需要注意函数调用的结果返回和后续操作设计等问题。 4.常见的函数调用错误 常见的函数调用错误包括参数类型不匹配、参数数量不匹配、函数名称输入错误等。只有明确理解合理设计函数和正确进行调用,才能避免这些常见错误的发生。 总的来说,第四的重点是帮助大家理解函数的实现原理和函数调用的过程,以及函数的输入输出参数的设计。同时,还需要注意常见的函数调用错误,并根据实际情况进行合理的调整和修改操作,以实现更为高效灵活的编程操作。 ### 回答3: 函数函数调用是程序设计中非常重要的概念,也是初学者必须掌握的内容。在理解函数及其调用之前,我们首先需要了解什么是函数函数是一组完成特定任务的代码块,这个代码块可以接受输入,处理输入并输出结果。函数可以模块化代码、提高代码重用率、简化代码结构等,因此在程序设计中使用函数非常普遍。函数包括函数名称、参数列表、返回值和函数体等四个部分。 函数调用是指在程序中调用函数的过程。调用函数时,需要提供函数名称和参数列表以及指定函数返回值的类型。程序在执行调用语句的时候,就会进入到函数体中执行所需的代码,并返回执行结果给调用者。 在使用函数函数调用时,我们需要分清主次。主要体现在以下几个方面: 1. 确定函数的功能。在编写函数时,需要精确定义该函数的功能以及所需的参数和返回值类型。一定要避免一个函数承担不同功能,或者一个函数只是一个语句块的容器。 2. 确定函数调用的位置。在确定函数调用位置时,需要明确其所在的上下文环境,以确保参数的传递和返回值的使用正确无误,避免出现混乱的逻辑错误。 3. 确定函数调用的数量。在程序设计中,正确使用函数可大幅减少代码的重复性,提高代码复用率,但过多的函数调用也会产生额外的开销,降低程序的效率。 4. 确定函数调用的方式。在函数调用时,有时需要使用传值调用,有时需要使用指针调用等不同的方式来传递参数和调用函数。 综上所述,函数函数调用是程序设计中非常重要的概念,我们需要在理解其基础概念的基础上,分清主次,正确地应用到程序设计中。只有正确地使用函数函数调用,才能为编写高效、优雅和易维护的程序打下坚实的基础。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值