鱼C论坛

 找回密码
 立即注册
查看: 1527|回复: 7

[已解决]python里有没有“穿越函数”这种东西

[复制链接]
发表于 2021-10-23 14:42:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
自学小白,不知道怎么描述这个功能。大概就是想要实现
def f_1():
      .....
      if  ....:#比如满足某个条件时,触发f_2()改变f_1()里的参数。
         f_2() 
         #然后f_2()执行完成之后,这里用一个函数回到f_1()开头,重新执行f_1()

大概就是想实现这样一个功能,求助各位大佬有没有这种函数吖
最佳答案
2021-10-23 15:04:43
本帖最后由 傻眼貓咪 于 2021-10-23 15:08 编辑

不明白你想要的,希望我的代码对你有帮助
def A(num):
    if num > 5:
        def B():
            nonlocal num
            num = 5
        B()
        A(num)
    else:
        print(num)

A(123456)
5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-23 14:53:35 | 显示全部楼层
生成器的.send方法不知道能不能符合你的需求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 14:55:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-23 14:55:55 | 显示全部楼层
递归有点符合,单递归都是同一个函数。
看你的需求,应该不用“穿越”。
你的需求具体是啥?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 15:04:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2021-10-23 15:08 编辑

不明白你想要的,希望我的代码对你有帮助
def A(num):
    if num > 5:
        def B():
            nonlocal num
            num = 5
        B()
        A(num)
    else:
        print(num)

A(123456)
5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 15:50:38 | 显示全部楼层
本帖最后由 jackz007 于 2021-10-23 15:53 编辑

        穿越不了,只能 "好进好出,有始有终"
def f1(n):
    while True:
        print('n = ' , n)
        if n :
            n -= 1
            f2(n)
        else:
            break

def f2(n):
    print('f2()')

f1(10)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 16:48:25 From FishC Mobile | 显示全部楼层
没有。
你想实现的目标有肯定有更好的实现逻辑,很多新手都是上来就问能不能让代码怎么样运行,殊不知他想实现的结果几行代码就搞定了。所以说你问更原始的目标可能有更多答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-23 20:37:33 | 显示全部楼层
傻眼貓咪 发表于 2021-10-23 15:04
不明白你想要的,希望我的代码对你有帮助:

差不多是这个意思,我明天试试这个思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表