improve your python code(6)

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

1. i+=1不等于++i

python解释器会将++i解释为+(+i),同理将--i解释为-(-i)。其中+表示正数符号而不是自增,-表示负数符号而不是自减。这样有:

>>>-2
-2
>>>--2
2
>>>-----2
-2

因此你需要明白++i在python中语法上时合法的,但并不是我们理解的通常意义上的自增操作

2. 使用with自动关闭资源

你在IDE中这样写:

f = open("test.txt",'w')
f.write("test")

时,真的创建了文件,并且把”test”写进了文件里,这是IDE替你做的,事实上,如果你在ipyhton中这样写,打开文件后,里面并没有test.因为你没有关闭文件。
因此,你可以用下面的语法来“优雅”的操作文件:

with open('test.txt','w') as f:
    f.write('test')

这里写图片描述

3. 异常处理的基本原则

这里写图片描述
这里写图片描述
1. 注意异常粒度,不推荐在try中放入过多代码。
2. 谨慎使用单独的except语句处理所有异常
3. 注意异常的捕获顺序:将继承结构中子类异常在前面的except语句中抛出,而父类异常在后面的except语句中抛出。
4. 异常应该在适当的位置处理:如果异常能够在被捕获的位置处理,那么应该及时处理,不能处理的,应该以合适的方式向上层抛出。如

try:
    some_code()
except:
    revert_stuff()
    raise

做个试验验证一下:
1:如果这样写,则在fun()中,异常就已经被处理了:

#!/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
@file: pyexceptions.py
@time: 5/2/2017 9:24 PM
"""


def fun():
    try:
        a=0
        b=1
        print(b/a)
    except:
        print("exception has been handled in fun")
        #raise 


def usefun():
    try:
        fun()
    except BaseException as b:
        print("exception in fun has been handled in usefun:",b)

if __name__ == '__main__':
    usefun()

得到的结果证明确实是在fun中处理了:

output:
exception has been handled in fun

Process finished with exit code 0

如若把上面的代码中,注释掉的”raise”使用,把”raise”上面的print语句注释掉,则异常被raise抛出到上一层,在usefun中处理:

output:
exception in fun has been handled in usefun: division by zero

Process finished with exit code 0
论文阅读:Leveraging Code Generation to Improve Code Retrieval and Summarization via Dual Learning 利用对偶学习提升代码摘要和代码检索性能 阅读详情

相关推荐

华三R4900 G5服务器实战:用PMC P460-B4阵列卡配置RAID1+RAID6,并搞定CentOS 7.9安装(含热备盘设置)

本文详细解析了在华三R4900 G5服务器上使用PMC P460-B4阵列卡配置RAID1+RAID6混合阵列的全过程,包括热备盘设置和CentOS 7.9系统安装。通过实战步骤和性能优化建议,帮助企业IT人员高效部署高可用存储方案,特别适合需要数据冗余和系统稳定性的企业级应用场景。

weixin_29248653的博客 358

improve your python code(1)

python improving suggestions

相国大人 1718

MATLAB实战:手把手教你实现WVD信号分析(附完整代码与避坑指南)

本文通过MATLAB实战,手把手教你实现Wigner-Ville分布(WVD)信号分析。文章提供了从零构建WVD函数的完整代码,并重点解析了使用解析信号、处理交叉项、优化计算效率等关键避坑指南,帮助工程师高效处理非平稳信号,获得高分辨率的时频分析结果。

purple的博客 1081

improve your python code(10)

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

相国大人 705

【Godot】实现对话系统

在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似)通过 Godot 和 GDScript,我们可以给我们的游戏实现一个对话系统。从简单的文本显示到复杂的分支对话,Godot 提供了足够的灵活性来满足我们的需求。如果需要更高级的功能,可以尝试使用现成的插件如 Dialogic。

Octopus2077的博客 2522

汽车级智能栅极驱动器深度解析 | 连载01:DRV871x-Q1系列产品架构与核心特性

集成度:单芯片集成多通道驱动器、电源管理、电流检测智能化:自适应控制算法,减少外部元件可靠性:多重保护机制,满足汽车级要求灵活性:SPI和硬件两种接口,适应不同应用需求。

VehSwHwDeveloper的博客 1153

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

关于mos管的压降问题(项目遇到问题总结)

在研发过程中没有出现问题的板子,到了小批时竟出现雷达一直在触发???找了大几天,没有头绪。心中疑惑颇多,加上老板催促,自考等原因,真是压力山大。4月份自考,只有差不多一个月时间了吧,没有什么大的收获,反而在查找硬件问题的过程中,发现了一个自己忽视的一个问题,就是关于Mos管的压降问题。 备考的过程崎岖不平,工作又问题多多,孰轻孰重,如何取舍?从心理来说,不想取舍什么,只是有所得就可以,过不了就过不了呗,已经毕业十五年了,没这个本科文凭不也过来了吗?只是代表了自己在这一段时间的思考,自己兴趣吧,没什么大不了

guangod的博客 2万+

improve your python code(5)

1. from easy impor disaster 优先使用import a.B 有节制地使用from a import B 尽量避免使用from a import* 1.1 实例:例如在如下的包结构中: 下面的代码中,第1行为绝对导入,正确;第2行为相对导入,正确;第3行也是绝对导入,报错。以为两个文件在同一个包中,就忽略了pack1.这个层次。""" @file: constant.p

相国大人 689

Win10 环境下 ISE14.7 iMPACT 闪退的 DLL 修复方案 - FPGA 开发实战

本文详细介绍了在Win10系统下解决ISE14.7 iMPACT工具闪退问题的DLL修复方案,特别针对FPGA开发中常见的兼容性问题。通过替换关键DLL文件,有效解决了iMPACT在生成PROM文件时的崩溃问题,并提供了详细的步骤说明和注意事项,帮助开发者提升工作效率。

weixin_29197051的博客 210

基于simulink的预测电流控制策略的三相逆变器仿真

本文详细介绍了在Simulink中实现基于预测电流控制策略的三相逆变器仿真方法。主要内容包括:准备工作(安装必要软件及工具箱)、构建三相逆变器基础模型、设计预测电流控制器(包含状态空间建模和控制器设计)、实现控制逻辑、添加示波器观察输出、配置仿真参数以及运行仿真分析结果。通过MATLAB代码示例和Simulink模块说明,展示了如何选择最优开关状态来最小化电流误差。该仿真方法为研究快速响应、高精度的逆变器控制提供了实用工具,但需注意实际应用中可能需要的调试工作。

amy_mhd的博客 275

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

基于EB工具的TC3xx_MCAL配置开发05_ADC模块硬件Pwm触发Demo配置

基于EB工具,硬件Pwm触发ADC采集Demo配置详细介绍

initiallizer的博客 3509

improve your python code(4)

1. 使用enumerate()获取序列迭代索引和值#不好的习惯: li = ['a', 'b', 'c', 'd', 'e'] index = 0 for i in li: print(index, i) index += 1 for i in range(len(li)): print(i, li[i]) dex = 0 while dex < len(li):

相国大人 731

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

improve your python code(11)

1. ini配置文件如果我们程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件有很多如INI配置文件,XML配置文件,还有就是可以使用系统注册表等。在早期的windows桌面系统中主要是用INI文件作为系统的配置文件,从win95以后开始转向使用注册表,但是还有很多

相国大人 593

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

improve your python code(13)

1. 序列化操作1.1 理解模块pickle/cPickle的优劣import cPickle as pickle my_data = {'name':'python','type':'language'} with open('pickle.dat','wb') as fp: pickle.dump(my_data,fp) """ pickle.dump(obj,file[,protoco

相国大人 400

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

本地视频硬字幕提取:离线3步导出SRT文件

视频里的字幕想复制,却发现一个字都点不中,只能手打。开源工具 video-subtitle-extractor(VSE)做的就是视频硬字幕提取:把画面中的文字识别出来,直接生成可编辑的 SRT 字幕文件,全程在本地完成。 ## 视频硬字幕提取解决什么问题:本地离线生成SRT 如果下载的老番、公开课里带着烧录在画面里的字幕,想纠错或做双语版,却发现没有字幕轨可以开关和复制,你肯定有过对着屏幕逐字

gitblog_00345的博客 923

别再手写RPC存根:Kitex从IDL到服务上线只需5条命令

订单服务要调库存、支付、用户三个下游,手写 HTTP 意味着序列化、错误码、超时逻辑全部自己拼,层层转发延迟一路累积。解法是 RPC:Kitex 这个 Go RPC 框架让你在 IDL 里声明一次接口,服务端和客户端的桩代码全部自动生成,你只写业务逻辑。下面这条 Kitex 入门教程路线,从 IDL 到跑通第一次调用只需 5 条命令。 ## ⚙️ 安装工具链并确认版本 Kitex 工具链只需要

gitblog_00942的博客 336

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

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

gitblog_00293的博客 945

ECC 开发工作流指南:基于 planner、TDD 与 code-reviewer 的 Agent 全流程治理

> 在 ECC(Everything Claude Code)为 Kiro 适配的 `.kiro` 组件包中,[steering 规则文件](https://link.gitcode.com/i/b052ddf0a9ccf26621e8852b9fae7ec8) 以“始终生效(auto inclusion)”的方式定义了 Agent 在编码阶段必须遵循的开发管线:先规划、再 TDD、立即评审、最后

gitblog_00970的博客 381

python 中文文本分类

写这篇博文用了很多时间和精力,如果这篇博文对你有帮助,希望您可以打赏给博主相国大人。哪怕只捐1毛钱,也是一种心意。通过这样的方式,也可以培养整个行业的知识产权意识。我可以和您建立更多的联系,并且在相关领域提供给您更多的资料和技术支持。 赏金将用于拉萨儿童图书公益募捐 手机扫一扫,即可: 目标读者:初级入门学生。本文假定,你对python已经有了最基本的掌握。 如果你希望能够

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值