函数的使用必须遵循先定义,后调用的原则,
没有事先定义函数,而直接引用函数名,就相当于在引用一个不存在的变量名
1、函数定义阶段:只检测函数体的语法,不执行函数体代码
def func():
print('1111')
print('222')
print('333')
2、函数调用阶段:执行函数体代码
func()
例1
def foo():
print('from foo')
bar() # 函数定义阶段只检查函数体的语法
foo()
例2
def bar():
print('from bar')
def foo():
print('from foo')
bar()
foo() # foo()执行的时候bar()已经定义好了,所以执行fool并不会报错。定义的时候并不会执行代码。
# 例3
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo() # 函数定义时并不会执行代码,只会检测函数体的语法。
例4
def foo():
print('from foo')
bar()
foo() # 这个执行会报错,因为调用函数后才定义了bar()
def bar():
print('from bar')
函数的定义与调用
越是困难的事越要立即去做,这样收益才会最大!!!
推荐阅读
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_5_Objects非空判断_requireNonNull
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_6_throws关键字_异常处理的第一种方式
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_7_try_catch_异常处理的第二种方式
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_8_Throwable类中3个异常处理的方法
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_9_finally代码块
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_10_异常注意事项_多异常的捕获处理
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_11_异常注意事项_finally有return语句
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_12_异常注意事项_子父类异常
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_13_自定义异常类
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_14_自定义异常类的练习