improve your python code(5)

Gemini Code Assist实战指南:VS Code中Python开发的智能协作者 AI编程助手正从代码补全工具演进为深度嵌入编辑器上下文的智能协作者。其核心原理在于实时感知当前文件结构、光标位置与选中代码,实现意图驱动的生成与重构。技术价值体现在显著降低重复性操作的认知负荷,提升Python开发效率——尤其在pandas数据处理、Flask接口编写、单元测试生成等高频场景中。相比Copilot的补全逻辑或Cursor的Agent模式,Gemini Code Assist以VS Code原生集成、免费高额度(6000次/日)和安全可控的diff预览机制,成为个人开发者与小团队落地AI编程的 阅读详情

1. from easy impor disaster

  1. 优先使用import a.B
  2. 有节制地使用from a import B
  3. 尽量避免使用from a import*

1.1 实例:

例如在如下的包结构中:
这里写图片描述
下面的代码中,第1行为绝对导入,正确;第2行为相对导入,正确;第3行也是绝对导入,报错。以为两个文件在同一个包中,就忽略了pack1.这个层次。

"""
@file: constant.py
"""
import pack1.const  # 正确
from .import const  # 正确
import const        # 错误
from pack2 import suggest1  # 绝对导入时,模块单独运行正常

进一步地:相对导入时,模块单独运行报错
这里写图片描述

1.2 对于上面现象的解释:

以下内容来自博客:Huoty’s Blog

Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。

1.2.1 Python import 的搜索路径

在当前目录下搜索该模块
在环境变量 PYTHONPATH 中指定的路径列表中依次搜索
在 Python 安装路径的 lib 库中搜索

1.2.2 Python import 的步骤

python 所有加载的模块信息都存放在 sys.modules 结构中,当 import 一个模块时,会按如下步骤来进行:
如果是 import A,检查 sys.modules 中是否已经有 A,如果有则不加载,如果没有则为 A 创建 module 对象,并加载 A
如果是 from A import B,先为 A 创建 module 对象,再解析A,从中寻找B并填充到 A 的 dict 中
相对导入与绝对导入
绝对导入的格式为 import A.B 或 from A import B,相对导入格式为 from . import B 或 from ..A import B,.代表当前模块,..代表上层模块,…代表上上层模块,依次类推。

相对导入可以避免硬编码带来的维护问题,例如我们改了某一顶层包的名,那么其子包所有的导入就都不能用了。但是 存在相对导入语句的模块,不能直接运行,否则会有ValueError: Attempted relative import in non-package我们需要先来了解下导入模块时的一些规则:

在没有明确指定包结构的情况下,Python 是根据 name 来决定一个模块在包中的结构的,如果是 main 则它本身是顶层模块,没有包结构,如果是A.B.C 结构,那么顶层模块是 A。基本上遵循这样的原则:

如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块
如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径。

Python2.x 缺省为相对路径导入,Python3.x 缺省为绝对路径导入。绝对导入可以避免导入子包覆盖掉标准库模块(由于名字相同,发生冲突)。如果在 Python2.x 中要默认使用绝对导入,可以在文件开头加入如下from __future__ import absolute_import.import 并不是指将所有的导入视为绝对导入,而是指禁用 implicit relative import(隐式相对导入), 但并不会禁掉 explicit relative import(显示相对导入)。

那么到底什么是隐式相对导入,什么又是显示的相对导入呢?我们来看一个例子,假设有如下包结构:

thing
├── books
│ ├── adventure.py
│ ├── history.py
│ ├── horror.py
│ ├── init.py
│ └── lovestory.py
├── furniture
│ ├── armchair.py
│ ├── bench.py
│ ├── init.py
│ ├── screen.py
│ └── stool.py
└── init.py
那么如果在 stool 中引用 bench,则有如下几种方式:

import bench                 # 此为 implicit relative import
from . import bench          # 此为 explicit relative import
from furniture import bench  # 此为 absolute import

隐式相对就是没有告诉解释器相对于谁,但默认相对与当前模块;而显示相对则明确告诉解释器相对于谁来导入。以上导入方式的第三种,才是官方推荐的,第一种是官方强烈不推荐的,Python3 中已经被废弃,这种方式只能用于导入 path 中的模块。

相对与绝对仅针对包内导入而言
最后再次强调,相对导入与绝对导入仅针对于包内导入而言,要不然本文所讨论的内容就没有意义。所谓的包,就是包含 init.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 Python 代码。

相对导入可以避免硬编码,对于包的维护是友好的。绝对导入可以避免与标准库命名的冲突,实际上也不推荐自定义模块与标准库命令相同。

有人可能会问:假如有两个模块 a.py 和 b.py 放在同一个目录下,为什么能在 b.py 中 import a 呢?

这是因为这两个文件所在的目录不是一个包,那么每一个 python 文件都是一个独立的、可以直接被其他模块导入的模块,就像你导入标准库一样,它们不存在相对导入和绝对导入的问题。相对导入与绝对导入仅用于包内部。

更多信息,可以参考这个链接的第10章
http://python3-cookbook.readthedocs.io/zh_CN/latest/index.html

Claude Code深度配置指南:VS Code集成与CLI环境协同实战 AI编程助手并非简单插件,而是需深度集成的IDE级开发基础设施。其核心原理在于VS Code扩展主机与原生CLI二进制(Rust编译)的进程隔离通信,依赖Wasm沙箱、环境变量继承、MCP协议及细粒度文件权限建模。技术价值体现在上下文安全管控、Git工作区隔离、代码快照回滚与企业级权限分级等工程能力。典型应用场景包括TypeScript/Python/Rust多语言项目中的智能补全、Bug定位、测试生成与PR辅助审查。本文聚焦Claude Code在VS Code 1.98+环境下的真实部署链路,覆盖CLI 阅读详情

相关推荐

Claude Code开发工具链:从CLI到VS Code集成的系统实践指南

Claude Code并非聊天界面,而是面向程序员的可编程代码生成工具链,其核心是通过Anthropic官方SDK/CLI以工程化方式调用Claude模型完成代码生成、重构与解释。理解其底层原理需厘清API调用机制、环境隔离(如pipx)、提示词结构化设计(角色/约束/输出/兜底)及本地化部署(Docker/FastAPI)等关键技术环节。它填补了网页版与桌面应用之间的能力断层,让AI真正嵌入开发流水线——支持命令行一键生成脚本、VS Code快捷键驱动实时重构、以及生产级HTTP服务封装。本文聚焦Clau

weixin_33762130的博客 330

Python-03improve

模块(import) 利用模块可以更加方便的使用Python实现一些功能 a)自定义模块 在Pycharm中新建一个Python文件,注意给它的命名最好是英文,否则可能Pycharm不识别。 如图所示:新建了一个文件,在其中写下自定义模块的内容 作用为打招呼 然后再新建一个Python文件,这个命名好像没有要求了 在第二个文件中输入import + 模块名,例如 运行即可调用之前写的自定义模块 也可以进行更改 运行结果为 自定义模块和路径查找有关通过 import sys print(sys.pa

AlienEowynWan的博客 307

搭建ipv6并发代理池

我开了个知识星球,把将本期搭建写成shell脚本已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab,瑞数456vmp补环境等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。我是pve下的ubuntu。

weixin_44697518的博客 1472

improve your python code(1)

python improving suggestions

相国大人 1718

UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount()【已解决】

UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount()【已解决】

围炉夜敲的博客 1万+

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

improve your python code(10)

1. 深拷贝与浅拷贝 Python中对象的赋值都是进行对象引用(内存地址)传递 使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用. 如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说 如果元祖变量只包含原子类

相国大人 705

手把手教你用DCA1000和mmWave Studio 2.0采集AWR1843雷达数据(附驱动安装与常见报错排查)

本文详细介绍了使用DCA1000和mmWave Studio 2.0采集AWR1843毫米波雷达数据的全流程指南,包括硬件连接、驱动安装、软件配置及常见报错排查。通过实战经验分享,帮助开发者快速掌握数据采集技巧,优化雷达参数配置,提升数据质量与采集效率。

weixin_30070339的博客 332

improve your python code(3)

数据交换时候,不推荐使用中间变量。 下面的代码中,swap1的运行速度要比swap2更快。 我们用dis模块来看一下两种代码的指令流程#!/usr/bin/env python # encoding: utf-8 """ @python version: ?? @author: XiangguoSun @contact: sunxiangguodut@qq.com @site: http://b

相国大人 685

游戏大厂技术护城河:你以为他们靠“美术和买量”,其实背后全是硬家伙

先把效果堆满到快上线了才发现低端机跑不动然后疯狂砍特效、降分辨率,画面崩、口碑崩机型分档(低/中/高)每帧预算(CPU/GPU 各多少 ms)每种资源预算(贴图、网格、粒子数量)性能自动回归(每天跑性能测试,发现波动立刻报警)大白话:小厂像装修到入住前才发现电路不够,临时拉线;大厂从设计图开始就算承重、算电路、算水压。玩家会不会来?活动会不会爆?版本会不会翻车?外挂会不会泛滥?竞品会不会抄?流量不确定 → 可扩容架构版本不确定 → 灰度与回滚。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 104

实战案例四:Claude Code + Excel 技能处理表格数据

Excel 是商业世界中最通用的数据工具。无论是财务报表、销售数据还是项目计划,Excel 无处不在。本案例将展示如何利用 Claude Code 的 Excel 技能,自动化处理复杂的表格数据,告别繁琐的手工操作。

gaoxiang_120的专栏 475

improve your python code(9)

1. 字符串处理小结#!/usr/bin/env python # encoding: utf-8 """ @python version: python3.6.1 @author: XiangguoSun @contact: sunxiangguodut@qq.com @site: http://blog.youkuaiyun.com/github_36326955 @software: PyCharm @f

相国大人 595

Python 爬虫实战:简易爬取知乎回答内容

本文详细介绍了使用Python爬取知乎回答内容的实战方法。通过分析知乎异步加载API接口,讲解如何构建带反爬策略的爬虫代码,包括请求头设置、JSON数据解析和内容清洗等核心步骤。文章提供了完整可运行的代码示例,并针对多页爬取、数据保存和反爬升级给出优化建议。同时强调爬虫使用的合规性,帮助新手快速掌握动态网页爬取的核心技巧,实现从静态到动态网页爬虫的进阶。

2503_91057718的博客 2196

improve your python code(2)

#!/usr/bin/env python # -*- coding: UTF-8 -*- """ @author: XiangguoSun @contact: sunxiangguodut@qq.com @file: suggest2.py @time: 2017/5/2 10:46 @software: PyCharm """ # ex1: 三元操作符 condition? value1:val

相国大人 1136

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)

这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5060

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

improve your python code(6)

1. i+=1不等于++ipython解释器会将++i解释为+(+i),同理将--i解释为-(-i)。其中+表示正数符号而不是自增,-表示负数符号而不是自减。这样有:>>>-2 -2 >>>--2 2 >>>-----2 -2因此你需要明白++i在python中语法上时合法的,但并不是我们理解的通常意义上的自增操作2. 使用with自动关闭资源你在IDE中这样写:f = open("test.tx

相国大人 632

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

improve your python code(12)

1. 用Pandas 处理大型csv文件对于pandas的更详细的解读,我们会在后续的博文中给出。这里主要掌握pandas处理csv文件中最核心的功能。#!/usr/bin/env python # -*- coding: UTF-8 -*- """ @author: XiangguoSun @contact: sunxiangguodut@qq.com @file: dealcsv.py @tim

相国大人 719

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

improve your python code(7)

1. 避免finally的陷阱回顾一下上一节我们画的图: 下面看一下这个代码 def FinallyTest(): print('I am starting------') while True: try: print('I am running') raise IndexError('r') ex

相国大人 795

improve your python code(8)

1. [] {} ().用列表解析器代替for遍历理由: 高校2. 函数传参既非传引用也非传值a = 5 # 开辟一个内存存放5,将a这个标签贴在这个内存上 b = a # 将b这个标签也贴在刚才的那个内存上 b = 7 # 开辟一个内存存放7,将b这个标签贴在这个内存上,刚才的那个b被覆盖。 3. *args,**kwargs

相国大人 731

OWASP: How to use flawfinder output to improve your source code

Flawfinder is a commonly used static source code analysis tool that can check code according to CWE guidelines and provide modification suggestions.Recap: How to Install Python 3 and Flawfinder for Static Analysis in a Windows Environment2021 list-of-mappe

agathakuan的博客 857

5分钟告别代码复制粘贴:用code2prompt让AI真正理解你的项目

你是否曾花费半小时手动复制代码文件,只为让ChatGPT帮你分析一个bug?或者精心整理项目结构,结果LLM还是无法理解文件之间的关系?今天,让我们告别这种低效的"代码搬运工"时代。 **code2prompt**就是那个能听懂AI语言的"翻译官",它能将整个代码库转化为LLM能理解的完整上下文,让你与AI的对话从"碎片化问答"升级为"全项目协作"。 ## 🔍 当代码遇到AI:为什么需要专业

gitblog_00527的博客 754

Easydict 贡献文档中的 Agent 协作流程:从 AGENTS.md 任务入口到 PR Review 的完整实践

本篇技术指南围绕 Easydict 开源仓库在 2026-09-07 落地的一次贡献文档治理任务展开,系统讲解该项目如何将"编程 Agent 参与开发"制度化为一套可跳转、可验证、不随模型版本漂移的协作流程。读者将掌握:Easydict 中 Agent 的计划/执行两种任务模式与任务路由机制、`AGENTS.md` 唯一入口的设计意图、常用 Skill 与子代理的边界、PR 提交前后的人工 rev

gitblog_00096的博客 630

如何快速配置code2prompt:终极实战指南

还在为给AI模型准备代码上下文而烦恼吗?每次都要手动复制文件、整理格式、计算token数量?code2prompt正是为了解决这一痛点而生的终极解决方案! ## 为什么你需要code2prompt? 在AI编程时代,我们经常需要将整个代码库提供给大语言模型进行分析。无论是让ChatGPT帮你重构代码,还是让Claude分析安全漏洞,传统的复制粘贴方式存在诸多问题: 1. **格式混乱** -

gitblog_00293的博客 945

5 Tips for Beginners to Improve Programming Logic

Read on.Top CoderCoderbyteCodeChefLeetCode。

电商数据代码站 783

2小时搭好量化回测系统:backtesting.py 交易策略回测实战

我印象最深的教训:某组双均线策略回测年化 32%,信心满满上实盘,三个月亏掉 18%。策略逻辑没写错,错在回测方法——没扣真实成本、拿全样本调参数、拿结果当未来。量化回测的价值从来不是证明"我能赚",而是用交易策略回测把亏钱的方式提前暴露出来。这篇文章就讲一件事:用 backtesting.py 这个 Python 回测框架,从零搭一个股票回测系统,跑通、看懂报告,再给结果挤掉水分。 ## 📊

gitblog_00622的博客 564

Code2Prompt 技术深度解析:架构揭秘与性能优化

Code2Prompt 是一款基于 Rust 构建的高性能代码库到 LLM 提示转换工具,专为现代 AI 辅助开发工作流设计。该项目通过智能文件遍历、精确令牌计数和模板化输出,解决了开发者与大型语言模型协作中的上下文管理难题。 ## 项目定位与技术价值 在 AI 辅助编程日益普及的今天,开发者面临的最大挑战之一是如何将复杂代码库有效传递给 LLM。传统的手动复制粘贴方式不仅效率低下,还容易超出

gitblog_00495的博客 877
上一篇: python乱码问题一览
下一篇: improve your python code(6)
相国大人
博客等级 码龄10年 1009粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值