python3 如何使用 goto 跳转执行到指定代码行

1. 缘起

在实际开发中遇到这样一个问题:

以下是伪代码

if embedding.model is not exist:
 calculate embedding   ## moudel_1
 save embedding.model
else :
 embedding = load embedding.model

try:
 use embedding
except KeyError:
 calculate embedding    ##这里与moudel_1一致。

发现except 中需要粘贴之前写过的calculate embedding

简单概括就是:

somecode_1
try:
 somecode_2
except:
 somecode_3
 somecode_1   ## 重新执行

2. 使用goto

(1)安装goto

pip install goto-statement

(2)使用goto完成一个小例子

官方文档见:https://pypi.org/project/goto-statement/

定义函数

from goto import with_goto

@with_goto     #必须有
def test(list_):
    tmp_list = list_
    label.begin  #标识跳转并开始执行的地方
    result = []
    try:
        for i, j in enumerate(list_):
            tmp = 1 / j
            result.append(tmp)
            last_right_i = i
    except ZeroDivisionError:
        del tmp_list[last_right_i + 1]
        goto.begin      #在有跳转标识的地方开始执行
    return result

运行

a = test([1, 3, 4, 0, 6])
print(a)

结果

[1.0, 0.3333333333333333, 0.25, 0.16666666666666666]

注意:如果你在ide山运行label 和 goto 下有红色波浪线提示错误。不用理会直接执行即可

补充:Pycharm跳转回之前所在的代码行

用Pycharm写Python代码有一段时间了,有一个问题一直困扰着我:浏览代码的时候时常需要从一个函数跳转到另一个函数,有时候两个函数相聚比较远,我一直不知道怎么直接回到上一个函数。

于是我采取的办法是按ctr+F然后输入上一个函数的函数名来定位并且回到上一个函数。不忍直视~~~

下面是找到跳转按钮的过程:

1.找到View下面的Toolbar并勾选上

2.按钮出现

一款对浏览代码功能支持良好的IDE一般Toolbar上都有按钮或者会有快捷键可以在历史浏览页面之间跳转。而我的Pycharm的默认设置一直是将Toolbar隐藏起来的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python协程asyncio模块的演变及高级用法

    Python协程及asyncio基础知识 协程(coroutine)也叫微线程,是实现多任务的另一种方式,是比线程更小的执行单元,一般运行在单进程和单线程上.因为它自带CPU的上下文,它可以通过简单的事件循环切换任务,比进程和线程的切换效率更高,这是因为进程和线程的切换由操作系统进行. Python实现协程的主要借助于两个库:asyncio和gevent.由于asyncio已经成为python的标准库了无需pip安装即可使用,这意味着asyncio作为Python原生的协程实现方式会更加流行.本

  • 教你利用Python破解ZIP或RAR文件密码

    一.破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确. 二.实验环境 本文采取的虚拟环境为 Pipenv. 库 zipfile:Python 标准库,使用时直接导入即可 rarfile:Python 第三方库 利用 Pipenv 安装 rarfile pipe

  • python print()函数的end参数和sep参数的用法说明

    最近在学习python过程中,对print()打印输出函数进行了进一步学习. python 2.6中,print输出内容需要使用引号. python 3.0中的print 函数修改引号为括号,即print() print()函数打印输出默认换行 i=1 while i<10: print(i) i+=1 print("循环结束") #程序运行结果 1 2 3 4 5 6 7 8 9 循环结束 从语法上讲,python 3.0的函数有一下格式: print([object,-]],

  • 浅谈对Python变量的一些认识理解

    一.Python变量 在大多数语言中,为一个值起一个名字时,把这种行为称为"给变量赋值"或"把值存储在变量中".不过,Python与许多其它计算机语言的有所不同,它并不是把值存储在变量中,而像是把名字"贴"在值的上边(专业一点说法是将名字绑定了对象).所以,有些Python程序员会说Python没有变量,只有名字,通过名字找到它代表的值. Python中的变量,与其它开发语言(如C语言)的不同: 在C语言中,变量类似于一个"容器&quo

  • Python进阶之高级用法详细总结

    一.Lambda表达式 Lambda表达式又被称之为匿名函数 格式 lambda 参数列表:函数体 def add(x,y): return x+y print(add(3,4)) #上面的函数可以写成Lambda函数 add_lambda=lambda x,y:x+y add_lambda(3,4) 二.map函数 函数就是有输入和输出,map的输入和输出对应关系如下图所示: 就是要把一个可迭代的对象按某个规则映射到新的对象上. 因此map函数要有两个参数,一个是映射规则,一个是可迭代对象.

  • 如何用python抓取B站数据

    概述 可以获取的数据包括: video-视频模块 user-用户模块 dynamic-动态模块 这次用"Running Man"十周年特辑的视频,来做个获取弹幕的Demo. 我是对比 没有对比,就没有伤害,就像最近的"哈工大"某学生和"浙大"某学生一样. 这是之前获取弹幕的过程: 1.弹幕数据接口 https://comment.bilibili.com/123072475.xml (一个固定的url地址 + 视频的cid + .xml) 2.利

  • python基于socketserver实现并发,验证客户端的合法性

    一.socketserver实现并发 tcp协议的socket是只能和一个客户端通信的,使用socketserver可以实现和多个客户端通信,他是在socket的基础上进行的封装,底层还是调用的socket. socket是底层模块 socketserver是基于socket完成的 socketserver代码格式: 服务端: import socketserver # 引入模块 import time ​ ​ # 类名随便定义,但是必须继承socketserver.BaseRequestHan

  • 解读python基于netconf协议获取网元的数据

    [原理介绍] 通过NETCONF,网管能够用可视化的界面统一管理网络中的设备,并且安全性高.可靠性强.扩展性强.如下图所示,网管与网络中的所有交换机之间建立NETCONF会话,用户即可在网管提供的可视化界面上对网络中的所有交换机进行统一的管理,提高网络运维效率. 网管通过NETCONF对设备进行管理组网图 [开发流程介绍] 首先进行网元的配置开通netconf协议相关篇配置,然后编写python调用netconf模块: [网元配置] 登录ne40e的管理口,按照如下命令配置,配置说明参见上面图示

  • python实现某考试系统生成word试卷

    本文实例为大家分享了python实现某考试系统生成word试卷的具体代码,供大家参考,具体内容如下 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 准备条件 1.试题excel信息,存放在名为data.xls的excel文件中 2.安装python依赖的模块信息 pip install xlrd pip install python-docx 提示:以下是本篇文章正文内容,下面案例可供参考 编码实现 #!/bin/bash env python import xlrd impo

  • python3 如何使用 goto 跳转执行到指定代码行

    1. 缘起 在实际开发中遇到这样一个问题: 以下是伪代码 if embedding.model is not exist: calculate embedding ## moudel_1 save embedding.model else : embedding = load embedding.model try: use embedding except KeyError: calculate embedding ##这里与moudel_1一致. 发现except 中需要粘贴之前写过的cal

  • python3 自动打印出最新版本执行的mysql2redis实例

    我就废话不多说了,直接看代码吧! #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 输出 mysql2redis 命令 # __author__ = caozhi # create_time 2018-11-12,update_time 2019-12-12 # version = 2.0 import os import re import sys import time import fcntl import subprocess import

  • Pytest如何使用skip跳过执行测试

    1.@pytest.mark.skip(reason=" ") -- 跳过执行测试函数 可传入一个非必须参数reason表示原因 import pytest @pytest.mark.skip(reason="no reason") def test_01(): print("---用例a执行---") class TestCase(): @pytest.mark.skip(reason="no reason") def te

  • Python3 itchat实现微信定时发送群消息的实例代码

    一.简介 1,使用微信,定时往指定的微信群里发送指定信息. 2,需要发送的内容使用excel进行维护,指定要发送的微信群名.时间.内容. 二.py库 1,itchat:这个是主要的工具,用于连接微信个人账号接口.以下是一些相关的知识点网站. 2,xlrd:这个是用来读Excel文件的工具. 3,apscheduler:这个是用来定时调度时间的工具. 三.实例代码 # coding=utf-8 from datetime import datetime import itchat import x

  • Python3爬取英雄联盟英雄皮肤大图实例代码

    爬虫思路 初步尝试 我先查看了network,并没有发现有可用的API:然后又用bs4去分析英雄列表页,但是请求到html里面,并没有英雄列表,在英雄列表的节点上,只有"正在加载中"这样的字样:同样的方法,分析英雄详情也是这种情况,所以我猜测,这些数据应该是Javascript负责加载的. 继续尝试 然后我就查看了 英雄列表的源代码 ,查看外部引入的js文件,以及行内的js脚本,大概在368行,发现了有处理英雄列表的js注释,然后继续往下读这些代码,发现了第一个彩蛋,也就是他引入了一个

  • Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python读取excel表格数据 1.读取excel表格数据常用操作 import xlrd # 打开excel表格 data_excel=xlrd.open_workbook('data/dataset.xlsx') # 获取所有sheet名称 names=data_excel.sheet_names()

  • Java实现等待所有子线程结束后再执行一段代码的方法

    本文实例讲述了Java实现等待所有子线程结束后再执行一段代码的方法.分享给大家供大家参考,具体如下: 今天有一个需求是:在一个方法中开启了一个子线程来执行操作,返回值依赖于子线程的执行结果,这样如果要返回正确的值,就需要开启子线程后 主线程等待子线程,然后子线程执行结束后,主线程再继续执行. 主线程等待子线程需要用到:CountDownLatch 代码如下: import java.util.concurrent.CountDownLatch; public class Counter { pu

  • JS路由跳转的简单实现代码

    这是一个简单的路由跳转,希望对你有所帮助 下面的连接中有复杂的路由跳转 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="angular1.4.6.min.js"></script> <script sr

  • go语言执行windows下命令行的方法

    本文实例讲述了go语言执行windows下命令行的方法.分享给大家供大家参考.具体如下: 在golang里执行windows下的命令行,例如在golang里面调用 del d:\a.txt 命令 复制代码 代码如下: package main import(     "fmt"     "os/exec" ) func main(){       c := exec.Command("cmd", "/C", "del

  • php使用PDO下exec()函数查询执行后受影响行数的方法

    本文实例讲述了php使用PDO下exec()函数查询执行后受影响行数的方法.分享给大家供大家参考,具体如下: exec()方法返回执行后受影响的行数. 语法:int PDO::exec(string statement) 提示: 参数statement是要执行的SQL语句.该方法返回执行查询时受影响的行数,通常用于insert,delete和update语句中.但不能用于select查询,返回查询结果. 为了验证这个提示,下面我分别对insert,delete,update,select 查询进

随机推荐