前向引用

函数定义 在 函数调用 之前

而函数定义的顺序无关紧要

就如同变量的定义一般

a = 1
b = 2

#两者没什么不同

b = 2
a = 1

  例

def bbb():
    print(‘this is b‘)
    aaa()
def aaa():
    print(‘this is a‘)
bbb()
#--------->
this is b
this is a

  

def aaa():
    print(‘this is a‘)
def bbb():
    print(‘this is b‘)
    aaa()
bbb()
#----------->
this is b
this is a

  不可以这样

def bbb():
    print(‘this is b‘)
    aaa()
bbb()
def aaa():
    print(‘this is a‘)
#--------->
Traceback (most recent call last):
this is b
  File "E:/pycharm/TEST.py", line 600, in <module>
    bbb()
  File "E:/pycharm/TEST.py", line 599, in bbb
    aaa()
NameError: name ‘aaa‘ is not defined

  

时间: 2024-12-31 15:32:52

前向引用的相关文章

java 报错非法的前向引用

今天在看<thinking in java>的时候,第四章提到了非法的前向引用,于是自己试了一下,书中的例子倒是一下就明白了,但是自己写的一个却怎么也不明白,于是上网问了一位前辈,终于明白啦! 这个是错误的代码: class BB { static int a = 0 ; public BB() { a++ ; System.out.println("执行BB" + a) ; } public void printA() { System.out.println("

iOS开发类别的前向引用

类别(category)除了可以对类进行扩展外,前向引用的能力也很强大.对于一些私有的方法(没有在.h文件里面声明的方法)如果我们想使用的话,有的使用的是performSelector来执行动态调用,这样完全可以调用私用方法,但是这样完全避开了编译器的语法检查,有时候未必是一种好的方法.使用类别来进行前向引用可以解决这个问题. 定义一个item类 @interface ZJItem : NSObject - (void)info; @end .m文件 @implementation ZJItem

Javac编译时报“非法的前向引用”,以及Eclipse自带的Java编译器的缺陷

编译以下类的时候,如果切换WARNING_LEVEL的赋值方式为"= StatusDef.WARNING",javac会报"非法的前向引用". Eclipse自带的编译器会编译通过,这是Eclipse编译器的一个缺陷. 产生这个编译错误的原因是,cinit方法是按照字段在源码中的声明顺序依次执行各个初始化代码段. 对于ForwardReference类,cinit方法依次执行以下功能: 通过NORMAL_LEVEL的数值,创建C0000_1字段. 在ForwardR

Python之函数、参数、局部全局变量、前向引用、递归

函数 函数:实现某种功能(数学形式.python def函数式编程) 过程:就是函数没有返回值 参数 1.形参 实参 位置参数 关键字参数 默认参数 1 # 形参x,y不分配内存空间 实参2,3在调用的时候才分配空间,调用完毕就释放空间 2 def calc(x, y): 3 res = x ** y 4 return res 5 6 7 c = calc(2, 3) 8 print(c) 9 10 11 def test(x, y, z): 12 print(x) 13 print(y) 14

C++类的组合、前向引用声明

3.5类的组合 Part1.应用背景 对于复杂的问题,往往可以逐步划分为一系列稍微简单的子问题. 解决复杂问题的有效方法是将其层层分解为简单的问题组合,首先解决简单问题复杂问题也就迎刃而解了. 在面向对象的程序设计中,可以对复杂对象进行分解.抽象,把一个复杂对象分解为简单对象的组合,由比较容易理解和实现的部件对象装配而成. Part2.定义及代码 ①定义:类的组合描述的就是一个雷内嵌其他类的对象作为成员的情况,他们之间的关系是一种包含与被包含的关系. ②作用机制:当创建类的对象时,如果这个类具有

前向引用的概念

前向引用的概念很简单,简单的理解就是使用变量前要先声明,如果使用了未声明的变量,就属于前向引用. 以JavaScript写一段代码来做一个简单示例. console.log(nott); // Uncaught ReferenceError: nott1 is not defined let nott = '我还没被定义呢你就想引用我'; 这里,因为nott的定义在console.log之后,所以就会报nott未定义的错误,这就是前向引用. 另外的我们再来看一个例子. console.log(n

python 前向引用

即函数调用在函数定义之前 可以这样 def bbb(): print('this is b') aaa() def aaa(): print('this is a') bbb() ---------> this is b this is a 可以这样 def aaa(): print('this is a') def bbb(): print('this is b') aaa() bbb() -----------> this is b this is a 但不可以这样 def bbb():

vs2015如何设置类或函数前不显示引用的数量

这几天,从vs2012换成vs2015,感觉15版本增加了一个类或函数前提示引用的数量,这个感觉很别扭,如何取消显示这个呢? 问题如下: 取消显示这个引用的步骤: 找到菜单栏: 工具 ---> 选项  ---> 文本编辑器 ---> 所有语言 ---> CodeLens 设置取消启用CodeLens,并保存就可以了 设置后结果如下:

c++的引用

/*#include"iostream"using namespace std;void any_function(int & p);//声明函数any_function//p为引用对象的别名int main(){ int a = 1; cout << "a is" << a << endl; any_function(a); //此时引用对象的地址传过去的,而不是副本//因为在c和c++中'&'是作为取地址符的,