请先看图2,Python或按键精灵如何实现非局部跳转,从当前子程序里直接跳到另一个子程序里面,主要是按键,不行再python

img


按键只能子程序内部跳转,不支持直接跳转到另一个子程序里面,有没有帮忙解决 c装成dll给按键用也行 看下图

img

在Python中实现非局部跳转可以使用try-except-finally块和raise语句。具体步骤如下:

1.创建一个新的异常类来表示我们需要存在的非局部控制流,例如:

class NonLocalJumpException(Exception):
    def __init__(self, target_func_name):
        self.target_func_name = target_func_name  # 目标函数名

    def jump(self):
        pass  # 当此异常被捕获并处理时,这个方法将会使代码跳转到目标函数

2.在当前子程序中引发NonLocalJumpException异常,在该异常的构造函数中指定要跳转到的目标函数的名称。


def source_func():
    print("在source_func()里")
    raise NonLocalJumpException(target_func_name="dest_func")
    print("执行不到这里")


def dest_func():
    print("在dest_func()里")

3.在目标函数中构建try-except块以捕获刚刚引发的NonLocalJumpException异常,并在相应的except块中调用异常对象的jump()方法以实现非局部跳转。

def wrapper_func():
    try:
        source_func()
    except NonLocalJumpException as nlje:
        if nlje.target_func_name == "dest_func":
            dest_func()
        else:
            raise nlje

wrapper_func()  # 输出: 在source_func()里 \n 在dest_func()

引用new bing部分回答作答:
在Python中,可以使用函数来实现从当前子程序跳转到另一个子程序的功能。函数是一个可以被调用的代码块,可以接受参数和返回值。

下面是一个简单的例子,演示如何在Python中定义和调用函数:

def func1():
    print("这是函数1")
    func2()

def func2():
    print("这是函数2")

# 调用函数1
func1()

在按键精灵中,可以使用类似的方式实现非局部跳转。按键精灵通常是通过模拟用户按键和鼠标操作来实现自动化任务,因此需要注意操作的顺序和正确性。

下面是一个简单的按键精灵例子,演示如何使用按键精灵实现非局部跳转:

import time
import keyboard

def func1():
    print("这是函数1")
    time.sleep(1)
    keyboard.press_and_release('ctrl+alt+f2')
    time.sleep(1)
    func2()

def func2():
    print("这是函数2")

# 调用函数1
func1()

在这个例子中,func1 中调用了按键精灵的 press_and_release 方法,模拟了用户按下 Ctrl+Alt+F2 组合键。这个组合键通常可以用来切换到另一个终端或控制台,从而实现了非局部跳转的功能。然后程序等待1秒钟,再调用 func2。

引用chatGPT作答,在Python中,可以使用return语句从当前函数或方法中返回,并在函数或方法的调用方继续执行代码。如果您想从当前函数或方法中跳转到另一个函数或方法中,则可以在当前函数或方法中调用另一个函数或方法。

例如,假设您有两个函数foo()和bar(),您可以在foo()函数中调用bar()函数,并在bar()函数中执行一些操作,然后从bar()函数中返回到foo()函数中继续执行剩余的代码。以下是示例代码:

def foo():
    print("Start of foo")
    bar()
    print("End of foo")

def bar():
    print("Start of bar")
    # do some operations
    print("End of bar")

在上面的示例中,foo()函数调用bar()函数,并在bar()函数中执行一些操作。一旦bar()函数完成,它将返回到foo()函数中继续执行剩余的代码。

对于按键精灵,您可以使用类似的方法。根据您使用的按键精灵软件和编程语言,可能会有不同的语法和API。但是,基本思想是相同的:您可以在当前子程序中调用另一个子程序,并在另一个子程序中执行一些操作,然后从另一个子程序中返回到当前子程序中继续执行剩余的代码。

请说出你非得从一个子过程goto到另一个子过程的理由?

基于ChatGPT的回答:
在Python中,可以使用函数的方式实现非局部跳转。即在一个函数中调用另一个函数,从而实现跳转。例如:

def func1():
    print("This is function 1")
    func2()

def func2():
    print("This is function 2")

func1()

运行上述代码,会先打印出"This is function 1",然后跳转到func2()函数中执行,最后打印出"This is function 2"。

在按键精灵中,可以使用“Call”指令实现非局部跳转。例如:

Call("subroutine1")

subroutine1:
    // do something
    Return

上述代码中,使用Call指令调用了subroutine1子程序,执行完子程序中的代码后,使用Return指令返回原来的位置。

最好能整个dll给按键之间使用

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在Python中,可以使用goto语句实现非局部跳转,但一般不建议使用,因为它会使代码变得难以维护和理解。更好的方法是使用函数调用,将需要跳转的代码块封装成一个函数,然后在需要跳转的地方调用该函数。

例如,如果你想实现从func1函数中跳转到func2函数,可以这样写:

def func1():
    # do something
    func2()

def func2():
    # do something

如果你使用按键精灵,可以将需要跳转的代码块封装成一个子程序,然后在需要跳转的地方调用该子程序。

例如,如果你想实现从Sub1子程序中跳转到Sub2子程序,可以这样写:

Sub1:
    ' do something
    Gosub Sub2
    ' continue doing something

Sub2:
    ' do something
    Return

注意,在按键精灵中,子程序内部跳转只能使用GosubReturn语句,不能使用Goto语句。
如果我的回答解决了您的问题,请采纳!

以下内容引用CHATGPT:

可以通过函数调用实现非局部跳转,将需要跳转的代码封装成一个函数,在需要的地方直接调用该函数即可跳转到另一个子程序。

例如,假设有两个子程序A和B,需要从A中跳转到B中,可以将B的代码封装成一个函数,如下所示:

def B():
    # B的代码

在A中调用B函数即可跳转到B中:

B()

完整的例子如下:

def A():
    print("This is A.")
    B()

def B():
    print("This is B.")

A()

输出结果为:

This is A.
This is B.