improve your python code(10)

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

1. 深拷贝与浅拷贝

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

2.使用Counter进行计数统计

#!/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: counter.py
@time: 5/7/2017 7:32 PM
"""
from collections import Counter

data = ['a', '2', 2, 4, 5, '2', 'b', 4, 7, 'a', 5, 'd', 'a', 'z']
print(Counter(data))
print(list(Counter(data).elements())) """Counter(data).elements()获取Counter中的key值,是一个chain的迭代器"""
print(Counter(data).most_common(2)) 
"""找出前n个出现频率最高的元素以及他们对应的次数"""
print(Counter(data)['y'])   
"""访问不存在的元素时,返回0,而不是KeyError异常"""
"""
output:
Counter({'a': 3, '2': 2, 4: 2, 5: 2, 2: 1, 'b': 1, 7: 1, 'd': 1, 'z': 1})
['a', 'a', 'a', '2', '2', 2, 4, 4, 5, 5, 'b', 7, 'd', 'z']
[('a', 3), ('2', 2)]
0
"""



"""
update()用于被统计对象元素的更新,原有Count计数器对象与新增元素的统计计数值相加。
subtract()用于实现计数器对象中统计值相减,允许有负值。
"""
c = Counter("success")
print(c)
c.update("successfully")
print(c)
c.subtract("successzz")
print(c)
"""
output:
Counter({'s': 3, 'c': 2, 'u': 1, 'e': 1})
Counter({'s': 6, 'c': 4, 'u': 3, 'e': 2, 'l': 2, 'f': 1, 'y': 1})
Counter({'s': 3, 'u': 2, 'c': 2, 'l': 2, 'e': 1, 'f': 1, 'y': 1, 'z': -2})
"""

a = Counter(a=1,b=2,c=3,d=1)
print(a)        # output Counter({'c': 3, 'b': 2, 'a': 1, 'd': 1})

3.

基于YOLOv8-obb的自动车牌检测与CRNN车牌识别 基于YOLOv8-obb模型实现了针对带角度车牌的自动检测,并结合CRNN(Convolutional Recurrent Neural Network)技术进行车牌字符识别,旨在提高复杂场景下车牌识别系统的准确性和鲁棒性 阅读详情

相关推荐

概率数据关联(PDA):多目标跟踪的基石算法

1. 为什么需要概率数据关联? 2. 核心思想与假设条件 3. 算法核心:概率分配与状态更新 4. 典型应用场景与优势 5. 挑战与改进方向 6. 下期预告

qq_44965657的博客 1464

linecode7. 二叉树的序列化和反序列化已AC

 linecode7. 二叉树的序列化和反序列化AC 描述 笔记 数据 评测设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。 注意事项There is no limit of how you d...

yang_154116的博客 1万+

【MM小贴士】关于SAP系统中关税的处理方式

的运费,这部分来讲,我们关税的计价基础,就应该是货物价值+包邮到中国港口的运费,完后进行报关操作,缴纳关税,后半段从中国港口拉回到企业里面的运输费,就会做到费用里面去,而不是计入到存货成本。1、我们自己的企业和国外厂家A购买一项物资,厂家A的报价会分成几个组成部分货物本身的价值或者货物本身的价值+到国外港口的运费或者货物本身的价值+到中国港口的运费或者货物本身的价值+包邮到你们自己企业的整体运费。所以我的关税就是不确定的。重点是运费是哪一段的运费,如何结算,结算的货币,何时能够确定运费。.........

竹大的博客 9028

python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

1.代码的运行结果:   获取 指定文件夹下、指定文件格式 文件的: 总代码行数、总注释行数(需指定注释格式)、总空行数; 1 #coding: utf-8 2 import os, re 3 4 # 代码所在目录 5 FILE_PATH = './' 6 7 def analyze_code(codefilesource): 8 ''' 9 ...

weixin_33860553的博客 210

TCN实战:用Python手把手搭建时序预测模型(附完整代码)

本文详细介绍了如何使用Python搭建TCN(Temporal Convolutional Network)时序预测模型,包括数据预处理、模型架构实现、训练调优及预测评估。通过完整的代码示例和实用技巧,帮助开发者快速掌握TCN在时间序列预测中的应用,特别适合处理长期依赖问题。

weixin_29041195的博客 372

WebVTT中的文本轨道(Text Tracks,TT)到底是什么鬼?

WebVTT,全称是The Web Video Text Tracks Format,意思是网络视频文本轨道格式。那么到底什么是文本轨道(Text Tracks)呢?这篇文章希望一探究竟。

码农1479的博客 1985

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

强化学习——day16 动态规划算法

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略

想太多的学习日志 1550

PHP对接第三方 LINE 登录

1.LINE 官方文档:https://developers.line.biz/en/docs/line-login/getting-started/ 2.开发者平台地址:https://developers.line.me/en/ 3.获取的code 为一次性的,当你使用过这个code去获取token的时候 无论成功失败 都会在10分钟内失效! 10分钟之后 你才能用,当然 我想你没有时间去等,你可以再从登录开始,从新获取code! 注意 LINE 要配置的地址 必须是以 "https" 开头的, 当然.

TianYaLangZi_123的博客 1万+

【网络与爬虫 44】Canvas指纹伪造技术:突破浏览器图形渲染检测的终极指南

Canvas和WebGL指纹是现代反爬虫系统中最难绕过的检测技术之一,它们通过分析浏览器图形渲染的细微差异来识别用户设备。本文将深入解析Canvas和WebGL指纹的工作原理,探讨其在反爬虫检测中的应用,并提供多种有效的伪造和绕过策略,帮助开发者理解并应对这些高级检测技术。

熵数实验室 1206

【知识图谱】neo4j安装与配置_社区版_2025(附完整安装软件包)

(经历过各种版本NEO4J,遇见杂七杂八的各种问题,也看过非常多很好的教程,特此来分享一下,为大家排排坑。

知识靠谱的博客 2万+

【1LineCode】一行代码节流防抖

const debounce = (fn,timeout = 1000,_timer) => (...args)=>clearTimeout(_timer(_timer = setTimeout(fn.bind(this,...args),timeout))) const throttle = (fn,timeout = 1000,_flag=true) => (...args)=>_flag &&setTimeout(()=>{_flag = true;.

qq_33807889的博客 3万+

C# Modbus协议全解析 万字长文|RTU/TCP/UDP完整实战(寄存器映射+多从站组网+NModbus4工业级代码)

你做C#工业上位机开发,Modbus协议是绕不开的终极核心,没有之一!Modbus是由施耐德在1979年发布的工业级串行通信协议,经过40余年的发展,已经成为工业自动化领域的通用标准协议—— 小到温湿度传感器、智能电表、小型PLC,大到变频器、伺服驱动器、DCS集散控制系统,99%的工业设备都原生支持Modbus协议(RTU/TCP二选一,多数全支持)。很多开发者觉得Modbus「知识点杂、协议分支多、组网难」,本质是只掌握了零散的读写代码,没吃透。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1063

improve your python code(1)

python improving suggestions

相国大人 1718

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

深度学习工具包 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")

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

相国大人 596

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

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

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

improve your python code(11)

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

相国大人 593

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(7)

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

相国大人 795

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

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

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

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

gitblog_00345的博客 923
上一篇: python高手的自修课
下一篇: 推荐系统概述2
相国大人
博客等级 码龄10年 1009粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值