python函数应该先定义后调用

关于python第十一套试题中第26题选择题。
题目如下:
def fun1():
    print("in fun1()")
    fun2()
fun1()
def fun2():
    print("in fun2()")
    fun1()
fun2()
我看到这一题时第一印象就选择了“死循环”,但是事实却恰恰相反,正确答案是“报错”。
那么就来找一下原因吧。
def fun1():
	print("in fun1()")	
fun1()

当我们执行这个代码时,毫无疑问可以正常输出。让我们在看一下下面这个代码的执行。

fun1()
def fun1():
	print("in fun1()")
	
我们将定义和调用的顺序颠倒了。这是我们再执行就会报错。
(NameError: name 'fun1' is not defined)
这个我们应该比较好理解,应为我们并没有去定义一个名为fun1的函数,所以我们无法调用。
那么让我们再深入一下。


def fun1():
	fun2()	
	
def fun2():
	print("in fun2()")	
	
print("hello")	
fun1()

以上这个代码为什么可以正常执行呢?它在fun1函数的时候又不知道有fun2函数,它为什么不
报错呢?	     这是因为python执行时,它只去读取函数名,但是不没有进入函数内部,所以
它并不了解函数的内部执行的到底是啥。当我们在最后调用fun1时它才会进入,然后发现要执行
fun2函数,这时候它已经知道有一个函数叫fun2的,所以他就可以执行。


def fun1():
	fun2()
	
print("hello")	
fun1()	

def fun2():
	print("in fun2()")
	
以上这个代码,您应该猜到它会报错啦。这我们用上面的思路有验证一下。
执行代码,程序知道了一个叫fun1的函数,然后打印输出“hello”,碰到调用fun1函数,
进入函数内部,原来要调用名为fun2的函数,但是我们没有见过它啊,所以就会报出错误。
NameError: name 'fun2' is not defined。
通过整理以上的思路,我们就可以很容易的分析出本题的正确答案是“报错”。
在这里就不继续分析啦。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python函数定义调用非常简单。你可以使用 `def` 关键字来定义一个函数,然后使用函数名加上括号来调用它。 下面是一个示例代码,展示了如何定义一个简单的函数调用它: ```python def greet(): print("Hello, world!") # 调用函数 greet() ``` 在上面的例子,我们定义了一个名为 `greet` 的函数,它没有参数。当我们调用 `greet()` 时,它会打印出 "Hello, world!"。 如果函数需要接受参数,你可以在函数定义时指定参数的名称。例如: ```python def greet(name): print("Hello,", name) # 调用函数并传递参数 greet("Alice") ``` 这个例子,我们定义了一个名为 `greet` 的函数,并指定了一个名为 `name` 的参数。当我们调用 `greet("Alice")` 时,它会打印出 "Hello, Alice"。 除了不带参数的函数和带有参数的函数之外,你还可以在函数定义时指定默认参数值。这样,在调用函数时如果没有提供参数值,就会使用默认值。例如: ```python def greet(name="world"): print("Hello,", name) # 调用函数不传递参数 greet() # 调用函数并传递参数 greet("Alice") ``` 在上面的例子,我们将 `name` 参数的默认值设置为 "world"。如果我们调用 `greet()`,它会打印出 "Hello, world";如果我们调用 `greet("Alice")`,它会打印出 "Hello, Alice"。 这就是Python函数定义调用的基本方式。希望能对你有所帮助!如果你有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值