python语言中函数在调用前必须先定义吗_函数在python中使用之前是否应该定义它?...

函数/方法块中的代码在调用函数之前不会执行。而且CPython语言实现(这是最常见的实现,也是您可能正在使用的实现)不像C等语言那样在编译时进行名称检查。因为它主要是一种解释性语言,它会在运行时动态检查名称空间中是否有可用的名称。在

此外,关于Python您应该知道,类中的代码是在类创建时执行的,而使用in方法/函数的代码则不是。def语句只是将函数的名称添加到命名空间中。在调用函数之前,它不会在函数本身内运行任何代码。在

考虑下面的合法Python代码。在class Something:

def __init__(self):

self.puppy = Dog()

class Dog:

def __init__(self):

pass

inst = Something()

这是完全合法的,因为在定义Dog类之前,__init__不运行。但是如果我们把构造函数移到类Dog的创建之上呢?在

此代码将抱怨名称错误,因为Dog尚未定义!在

^{pr2}$

最后一个例子。。。在

此代码将抱怨相同的名称错误。在class Something:

my_puppy = Dog()

def __init__(self):

self.puppy = Dog()

class Dog:

def __init__(self):

pass

inst = Something()

这是因为Something中的所有代码都将立即执行,并且在执行过程中,命名空间/作用域不能访问名称Dog。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值