修改了一下问题,大家直接先看例 3

对于简单的控制语句来说,

x = 1

if x > 0:

print('true')

else:

print('false')

我们都知道当判定 x > 0时,else的语句是不会执行的,

python 属于解释型语言,对于函数来讲,例1

# filename test.py

def test1():

pass

# test1()

下面是我不知道正确与否的理解:

1,对于java而言,如果没有对于 test1() 这一行代码执行对函数 test1 的调用的话,那就整个程序基本上没有意义,不会有内存分配,也不会有执行

2,但是对于 python 而言,会创建 test1 函数对象,然后保存 test1 中的一系列操作,这些操作不会被执行,即使整个程序没有对 test1 有任何的调用操作,但是只要程序没有结束,那么 test1 就会一直存在于内存中。

至于原因,是函数 test1 在程序运行后,会成为当前模块对象,即 module __main__的属性。

3,而对于 "test1’ 这个函数名而言,他引用了这个函数对象,所以就算没有调用该函数,垃圾回收机制不会将其回收

嵌套函数 例2

# filename test.py

def test1():

def test2():

pass

# return test2()

# test1()

对于例 1,我的理解有错误吗?

对比例 2 中 test1 的内层函数 test2 的情况是怎么样的,有调用和没有调用的情况会有什么不同吗?

之前问题可能描述的不太清楚,这儿再举一个例子 3

>>> class A(object):

a = []

def test1(self):

pass

@classmethod

def test2(cls):

print('cls.a', sys.getrefcount(cls.a))

print('cls.test1:', sys.getrefcount(cls.test1))

>>> A.test2()

('cls.a', 2)

('cls.test1:', 1)

上面的输出这个 2 可以理解,但是为什么另一个是 1 呢?

>>> def test3():

def test4():

pass

>>> sys.getrefcount(test3)

2

>>> dir(test3)

['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']

# sys.getrefcount(test4) NameError: name 'test4' is not defined

现在的问题是 test3 中的内层函数 test4 在内存中吗?如果在的话,在哪儿?(我觉得是应该在内存中的)如果没在的话,为什么没有 test4? 如果没有 test4 的话,修改一下上面的代码又该怎么看 ?

def test3():

def test4():

pass

return test4 # return test4()

刚刚修改了问题的时候,突然想到对于编程来讲可能没什么实际意义,大家可能都会知道怎么去定义使用内层函数。但我还是希望有人能解答我的问题

python类中方法的执行顺序-python 函数或者类 代码的执行顺序相关推荐

  1. python中同一个类中方法之间的变量怎么调用

    class A:A = "你好"def test_a(self):self.m = "hello" #实例变量def test_b(self):self.tes ...

  2. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...

    封装,继承,多态 隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写 -**************************************************** ...

  3. python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别

    一.@classmethod 和 @staticmethod 1.staticmethod 作用:让类中的方法变成一个普通函数(普通函数没有绑定在任何一个特定的类或者实例上.所以与不需要对象实例化就可 ...

  4. python编程-迭代器(类,方法,继承),函数,数据结构,

    a, b = 0, 1 while b < 10:print(b) #print(b,end=',')a, b = b, a+b相当于 n=b m=a+b a=n b=m输出: 1 1 2 3 ...

  5. Struts2中XXX.Action类中方法的访问(三种方式)

    第一种:使用action标签的method属性(常规方法) Action类: package cn.tedu.web;import org.springframework.context.annota ...

  6. 继承(四):new方法都与基类中方法无关

    using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Inher ...

  7. (36)System Verilog类中方法示例

    (36)System Verilog类中方法示例 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类中方法示例 5)结语 1.2 FPG ...

  8. Matcher类中方法简介说明

    转自: Matcher类中方法简介说明 Matcher类中索引方法 索引方法的功能: 提供了索引信息, 返回匹配字符串的位置信息 索引方法如下所示: 编号 方法及备注说明 1 public int s ...

  9. C++_类中的6个默认成员函数

    C++类中有6个默认函数,分别是:构造函数.析构函数.拷贝构造函数.赋值运算符重载.取地址及const取地址运算符重载.这六个函数是很特殊的函数,如果我们不自己实现,编译器就会自己实现.这篇博客中将一 ...

  10. java一个项目只有一个主类吗_组成Java Application的若干类中,有且仅有一个主类,只有主类中含有主方main()。...

    组成Java Application的若干类中,有且仅有一个主类,只有主类中含有主方main(). A:对 B:错 正确答案:对 解析: 组成Java Application的若干类中,有且仅有一个主 ...

最新文章

  1. Onekey Ghost找不到硬盘分区怎么办
  2. Java中抽象类和接口的使用方法及区别
  3. SAP CRM呼叫中心里的Java stack
  4. Qt设置圆角按钮样式
  5. java awt区域,构建Java Swing中的区域图
  6. html跑马灯效果代码加速,网页特效_跑马灯特效代码大全一
  7. Linux svn 命令每次都要输入密码o(╯□╰)o
  8. 透彻解读mysql的可重复读、幻读及实现原理
  9. 计算机屏幕方向变化,知识:如何切换笔记本电脑屏幕的方向_计算机的基本知识_IT /计算机_信息...
  10. 揭开智慧校园的神秘面纱
  11. 中国式两性关系把外国人搞晕!
  12. 苹果支付验单java
  13. 计算机xp系统ie8,WinXP系统IE8安装失败的解决方法
  14. 离散信号的周期性判定,C++实现
  15. 仿京东App分类页面的实现
  16. 【天光学术】MPACC论文:实证会计研究生毕业论文写作“十诫”
  17. mini-batch Gradient Descent
  18. 机器学习中的聚类算法有哪几种?
  19. 数字图像处理(13): 形态学处理——图像开运算与图像闭运算
  20. 1 Introduction  介绍

热门文章

  1. 操作dict时避免出现KeyError的几种方法
  2. Java属性封装:getter属性类型为Date
  3. Ext JS学习第十六天 事件机制event(一)
  4. 谈谈Javascript闭包
  5. 强烈推荐Spring Web Flow权威指南
  6. 标 题:[转帖]SQL Server日期计算(收藏)
  7. 爬虫python书籍-Python爬虫案例:抓取豆瓣编程类高评分书籍
  8. python常用内置函数总结-python 几个常用的内置函数
  9. python自动化办公兼职-python自动化办公?学这些就够用了
  10. 如何系统的自学python 知乎-如何系统地自学 Python?