Python 踩坑之嵌套函数

这里需要特别注意一下, Python是解释类型的语言. 会允许在定义A函数之前没有定义B函数的情况下,函数A调用函数B.

def func1():
    print "Hello fun1"
    fun2()

def func2():
    print "Hello func2"

fun1()

这样做是可以的.但是试想一下, 如果函数2也调用函数1呢?

如下:

def func1():
    print "Hello fun1"
    fun2()

def func2():
    print "Hello func2"
    fun1()

fun1()

这就是个嵌套调用.会爆栈的...

因为不是编译性语言,这种问题很难预先用语法分析出来,很可能python为了追求速度,不去分析这种错误.

因此写程序的时候要特别注意, 不要两个或者多个函数之间嵌套调用...

当然,我没有这么干,只是尝试了一下,原来python还真可以嵌套定义函数

时间: 2024-10-13 15:57:09

Python 踩坑之嵌套函数的相关文章

Python 踩坑之旅进程篇其四一次性踩透 uid euid suid gid egid sgid的坑坑洼洼

目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜单 - Python踩坑指南代码示例 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需且仅需运行在 root 下 root 账号只能短暂授权给各个小组 通过账号管理平

Python踩坑之旅其一杀不死的Shell子进程

1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程, 包括但不限于如下类型的任务在执行: a. 多线程的网络通信包处理 和控制Master节点交互 有固定Listen端口 b. 定期作业任务, 通过subprocess.Pipe执行shell命令 c. etc 发现坑的过程很有意思: a.重启Agent发现Port被占用了 => 立刻想到可能进程没被杀死, 是不是停止脚本出问题 => 排除发现不是, Agent进程确实死亡了 => 通过 netstat -tanop|grep p

Python踩坑:类与类对象类型参数传递与使用

前言 对初学者来说,Python确实简单好用,毕竟动态类型语言,不用定义就可以拿来用,类型之间随意转换简直不要太方便,因此Python用来写写小脚本,爬虫程序什么的,没什么问题. 不过,一旦用来开发稍微大型一点的项目,例如搭建一个Web应用,就会遇到一些问题,一般缺乏经验的人都会陷入某些坑中.= =... 坑 先说坑,函数参数类型是一坑,类与类的对象这又是一坑. 虽然之前用其他静态类型语言(例如C#/Java)的时候都搞明白了的,但是换了个动态类型的Python,总会有点令人疑惑. 例子 让我用

Flutter 踩坑之build函数返回了null

今天遇到一个bug,内容都正常显示没问题,但是控制台里报错,如图: 翻译了下,说是函数不能返回空值,搜索了下,网上相同问题的是少写了个return,我检查了下也没发现少return的,后来突然发现if条件判断不全,没写else,如图: 好吧,加上else不报错了. 记录一下吧,这坑踩的... 原文地址:https://www.cnblogs.com/joe235/p/11732039.html

关于Python踩坑,a = "//" 之后 a is "//" 语句是否为True?

这两天踩了个坑,用写LCS的时候,发现 程序里面用了这个写法,然后就一直bug. 有点无语.常量的储存类型和变量的储存类型分开了. is 判断是比较的左右操作数的地址是否相等.如果是同一个对象,则返回True,否则返回False. 这里要特别注意,以后变量判断是否等于某一常量的时候,如果使用is,可能永远都是False. 但是遇到个坑, a = "+"? a is "+" a = "\\"? a is "\\" 两则后面一个语

python踩坑记录

1.代码如下:问题,运行login.py,输出两次func函数 login.py from decrator import authicate def checkuser_logged_in(re): if re == "1": return True elif re == "2": return False @authicate def post_comment(res): return "评论成功+" + res result = post_

.Net4.6 Task 异步OA现金盘平台出租函数 比 同步函数 慢5倍 踩坑经历

异步Task简单介绍本标题有点 哗众取宠OA现金盘平台出租QQ2952777280[话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com ,各位都别介意(不排除个人技术能力问题) -- 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 -- 异步编程模型 .Net 4.6 给 Task 增加了好几个 特别实用的方法,而且引入了 await async 语法糖 当然,这是非常不错的技术,奈何我有自己的线程队列封装,也就没有着

<<Python编程:从入门到实践>>踩坑记 Django

<<Python编程:从入门到实践>>踩坑记 Django Django Python 19.1.1.5 模板new_topic 做完书上的步骤后,对主题添加页面经行测试,但是浏览器显示 服务器异常. 个人采用的开发环境是virtual studio code , 测试起来很是难受,因为我配置的debug环境,断点操作没有作用. 经过我不断的测试,才发现我失败的原因是由于之前的误操作,先建立new_pizzas.py后改为new_pizzas.html的,错误就在这里.在我之后新建

python嵌套函数

1.嵌套函数定义 在python中有一种特殊函数,这种函数定义在函数的内部,像这样定义在其他函数内的函数叫做内部函数,内部函数所在的函数叫做外部函数.我们还可以定义多层嵌套函数,即内部函数定义一个内部函数.内部函数定义很简单,同样使用def定义,只是定义在一个函数的内部,举个例子: >>> var=90 >>> def test(): def nest(): global var print(var) var+=1 return nest >>> te