我去!Python 不愧是脚本之王,这 23 种命令行用法你全部 get 了吗?_python命令行怎么用(1)

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


或者直接使用 where (更简单的直接一个 w)把整个函数的调用栈给打印出来



(Pdb) where
/usr/lib/python2.7/site-packages/eventlet/greenpool.py(82)_spawn_n_impl()
-> func(*args, **kwargs)
/usr/lib/python2.7/site-packages/eventlet/wsgi.py(719)process_request()
-> proto.init(sock, address, self)
/usr/lib64/python2.7/SocketServer.py(649)init()
-> self.handle()
/usr/lib64/python2.7/BaseHTTPServer.py(340)handle()
-> self.handle_one_request()
/usr/lib/python2.7/site-packages/eventlet/wsgi.py(384)handle_one_request()
-> self.handle_one_response()
/usr/lib/python2.7/site-packages/eventlet/wsgi.py(481)handle_one_response()


### 2. 如何快速编译 Python 脚本?


pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度会有所提高。因此在一些场景下,可以预先编译成 pyc 文件,来提高加载速度。


编译的命令非常的简单,示例如下



$ tree demo
demo
└── main.py

$ python3 -O -m compileall demo
Listing ‘demo’…
Compiling ‘demo/main.py’…

$ tree demo
demo
├── pycache
│ └── main.cpython-39.opt-1.pyc
└── main.py


### 3. 交互模式下下划线的秒用


对于 \_ ,大家对于他的印象都是用于 占位符,省得为一个不需要用到的变量,绞尽脑汁的想变量名。


今天要介绍的是他的第二种用法,就是在交互式模式下的应用。


示例如下:



3 + 4
7
_
7
name=‘iswbm’
name
‘iswbm’
_
‘iswbm’


它记录的是上一次表达式中返回的 非 None 值。


一定要是非 None值 ,否则 \_ 存储的值不会被更新。这就是为什么print函数打印出来的值不会被存储。



3 + 4
7
_
7
print(“iswbm”)
iswbm
_
7


因为 print 函数打印的内容并不是函数本身的返回值,print 函数返回的 None


### 4. 让脚本报错后立即进入调试模式


当你在使用 python xxx.py 这样的方法,执行 Python 脚本时,若因为代码 bug 导致异常未捕获,那整个程序便会终止退出。


这个时候,我们通常会去排查是什么原因导致的程序崩溃。


大家都知道,排查问题的思路,第一步肯定是去查看日志,若这个 bug 隐藏的比较深,只有在特定场景下才会现身,那么还需要开发者,复现这个 bug,方能优化代码。


复现有时候很难,有时候虽然简单,但是要伪造各种数据,相当麻烦。


**如果有一种方法能在程序崩溃后,立马进入调试模式该有多好啊?**


明哥都这么问了,那肯定是带着解决方案来的。


只要你在执行脚本行,加上 -i 参数,即可在脚本执行完毕后进入 Python Shell 模式,方便你进行调试。


具体演示如下:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c15dc1c987844c9fb6b9d18b8440b2d6.png)  
 需要注意的是:脚本执行完毕,有两种情况:


1. 正常退出
2. 异常退出  
 这两种都会进入 Python Shell,如果脚本并无异常,最终也会进入 Python Shell 模式,需要你手动退出  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e3430a172ed440dc90d92272bfe5ee83.png)  
 如果希望脚本正确完成时自动推出,可以在脚本最后加上一行\_\_import\_\_(“os”).\_exit(0)


### 5. 快速将项目打包成应用程序


假设我当前有一个 demo 项目,目录结构树及相关文件的的代码如下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/248596e7f1b0476c9738b5f10ddb608e.png)  
 现在我使用如下命令,将该项目进行打包,其中 demo 是项目的文件夹名,main:main 中的第一个 main 指的 main.py,而第二个 main 指的是 main 函数



$ python3 -m zipapp demo -m “main:main”


执行完成后,会生成一个 demo.pyz 文件,可直接执行它。


具体演示过程如下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/54c04ea835cb405494c0d7fa49e8f2a4.png)


### 6. 往 Python Shell 中传入参数


往一个 Python 脚本传入参数,是一件非常简单的事情。


比如这样:



$ python demo.py arg1 arg2


我在验证一些简单的 Python 代码时,喜欢使用 Python Shell 。


那有没有办法在使用 Python Shell 时,向上面传递参数一样,传入参数呢?


经过我的摸索,终于找到了方法,具体方法如下:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/874647cdcf8c416e94f685a10fe3b36a.png)


### 7. 最快查看包搜索路径的方式


当你使用 import 导入一个包或模块时,Python 会去一些目录下查找,而这些目录是有优先级顺序的,正常人会使用 sys.path 查看。



import sys
from pprint import pprint
pprint(sys.path)
[‘’,
‘/usr/local/Python3.7/lib/python37.zip’,
‘/usr/local/Python3.7/lib/python3.7’,
‘/usr/local/Python3.7/lib/python3.7/lib-dynload’,
‘/home/wangbm/.local/lib/python3.7/site-packages’,
‘/usr/local/Python3.7/lib/python3.7/site-packages’]


那有没有更快的方式呢?


我这有一种连 console 模式都不用进入的方法呢?


你可能会想到这种,但这本质上与上面并无区别



[wangbm@localhost ~]$ python -c “print(‘\n’.join(import(‘sys’).path))”

/usr/lib/python2.7/site-packages/pip-18.1-py2.7.egg
/usr/lib/python2.7/site-packages/redis-3.0.1-py2.7.egg
/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/home/wangbm/.local/lib/python2.7/site-packages
/usr/lib64/python2.7/site-packages
/usr/lib64/python2.7/site-packages/gtk-2.0
/usr/lib/python2.7/site-packages


这里我要介绍的是比上面两种都方便的多的方法,一行命令即可解决



[wangbm@localhost ~]$ python3 -m site
sys.path = [
‘/home/wangbm’,
‘/usr/local/Python3.7/lib/python37.zip’,
‘/usr/local/Python3.7/lib/python3.7’,
‘/usr/local/Python3.7/lib/python3.7/lib-dynload’,
‘/home/wangbm/.local/lib/python3.7/site-packages’,
‘/usr/local/Python3.7/lib/python3.7/site-packages’,
]
USER_BASE: ‘/home/wangbm/.local’ (exists)
USER_SITE: ‘/home/wangbm/.local/lib/python3.7/site-packages’ (exists)
ENABLE_USER_SITE: True


从输出你可以发现,这个列的路径会比 sys.path 更全,它包含了用户环境的目录。


### 8. 使用自带的 telnet 端口检测工具


若你想检测指定的机器上有没有开放某端口,但本机并没有安装 telnet 工具,不如尝试一下 python 自带的 telnetlib 库,亦可实现你的需求。


检查 192.168.56.200 上的 22 端口有没有开放。



$ python3 -m telnetlib -d 192.168.56.200 22
Telnet(192.168.56.200,22): recv b’SSH-2.0-OpenSSH_7.4\r\n’
SSH-2.0-OpenSSH_7.4

Telnet(192.168.56.200,22): send b’\n’
Telnet(192.168.56.200,22): recv b’Protocol mismatch.\n’
Protocol mismatch.
Telnet(192.168.56.200,22): recv b’’
*** Connection closed by remote host ***


### 9. 命令行式执行 Python 代码


有时候你只是想验证一小段 Python 代码是否可用时,通常有两种方法


1. 输入 python 回车,进入 console 模式,然后敲入代码进行验证
2. 将你的代码写入 demo.py 脚本中,然后使用 python demo.py 验证


其实还有一种更简单的方法,比如我要计算一个字符串的md5



$ python -c “import hashlib;print(hashlib.md5(‘hello’).hexdigest())”
5d41402abc4b2a76b9719d911017c592


只要加 -c 参数,就可以输入你的 Python 代码了。


### 10. 用调试模式执行脚本


当你使用 pdb 进行脚本的调试时,你可能会先在目标代码处输入 import pdb;pdb.set\_trace() 来设置断点。


除此之外,还有一种方法,就是使用 -m pdb



$ python -m pdb demo.py

/Users/MING/demo.py(1)()
-> import sys
(Pdb)


### 11. 如何快速搭建 HTTP 服务器


搭建FTP,或者是搭建网络文件系统,这些方法都能够实现Linux的目录共享。但是FTP和网络文件系统的功能都过于强大,因此它们都有一些不够方便的地方。比如你想快速共享Linux系统的某个目录给整个项目团队,还想在一分钟内做到,怎么办?很简单,使用Python中的SimpleHTTPServer。


SimpleHTTPServer是Python 2自带的一个模块,是Python的Web服务器。它在Python 3已经合并到http.server模块中。具体例子如下,如不指定端口,则默认是8000端口。



python2

python -m SimpleHTTPServer 8888

python3

python3 -m http.server 8888


![在这里插入图片描述](https://img-blog.csdnimg.cn/6e29a7f03a5f44a5bd00305ec88f75f1.png)  
 SimpleHTTPServer有一个特性,如果待共享的目录下有index.html,那么index.html文件会被视为默认主页;如果不存在index.html文件,那么就会显示整个目录列表。


### 12. 快速构建 HTML 帮助文档


当你不知道一个内置模块如何使用时,会怎么做呢?


百度?Google?


其实完全没必要,这里教你一个离线学习 Python 模块的方法。


是的,你没有听错。


就算没有外网网络也能学习 Python 模块.


你只要在命令行下输入 python -m pydoc -p xxx 命令即可开启一个 HTTP 服务,xxx 为端口,你可以自己指定。



$ python -m pydoc -p 5200
pydoc server ready at http://localhost:5200/


帮助文档的效果如下  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/22fa238dda6b4899bd84547215ec135e.png)


### 13. 最正确且优雅的装包方法


当你使用 pip 来安装第三方的模块时,通常会使用这样的命令



$ pip install requests


此时如果你的环境中有 Python2 也有 Python 3,那你使用这条命令安装的包是安装 Python2 呢?还是安装到 Python 3 呢?


就算你的环境上没有安装 Python2,那也有可能存在着多个版本的 Python 吧?比如安装了 Python3.8,也安装了 Python3.9,那你安装包时就会很困惑,我到底把包安装在了哪里?


但若你使用这样的命令去安装,就没有了这样的烦恼了



在 python2 中安装

$ python -m pip install requests

在 python3 中安装

$ python3 -m pip install requests

在 python3.8 中安装

$ python3.8 -m pip install requests

在 python3.9 中安装

$ python3.9 -m pip install requests


### 8. 使用 json.tool 来格式化 JSON


假设现在你需要查看你机器上的json文件,而这个文件没有经过任何的美化,阅读起来是非常困难的。



$ cat demo.json
{“_id”:“5f12d319624e57e27d1291fe”,“index”:0,“guid”:“4e482708-c6aa-4ef9-a45e-d5ce2c72c68d”,“isActive”:false,“balance”:“$2,954.93”,“picture”:“http://placehold.it/32x32”,“age”:36,“eyeColor”:“green”,“name”:“MasseySaunders”,“gender”:“male”,“company”:“TALAE”,“email”:“masseysaunders@talae.com”,“phone”:“+1(853)508-3237”,“address”:“246IndianaPlace,Glenbrook,Iowa,3896”,“about”:“Velitmagnanostrudexcepteurduisextemporirurefugiataliquasunt.Excepteurvelitquiseuinexinoccaecatoccaecatveliteuet.Commodonisialiquipirureminimconsequatminimconsecteturipsumsitex.\r\n”,“registered”:“2017-02-06T06:42:20-08:00”,“latitude”:-10.269827,“longitude”:-103.12419,“tags”:[“laborum”,“excepteur”,“veniam”,“reprehenderit”,“voluptate”,“laborum”,“in”],“friends”:[{“id”:0,“name”:“DorotheaShields”},{“id”:1,“name”:“AnnaRosales”},{“id”:2,“name”:“GravesBryant”}],“greeting”:“Hello,MasseySaunders!Youhave8unreadmessages.”,“favoriteFruit”:“apple”}


这时候你就可以使用 python 的命令行来直接美化。



$ python -m json.tool demo.json
{
“_id”: “5f12d319624e57e27d1291fe”,
“about”: “Velitmagnanostrudexcepteurduisextemporirurefugiataliquasunt.Excepteurvelitquiseuinexinoccaecatoccaecatveliteuet.Commodonisialiquipirureminimconsequatminimconsecteturipsumsitex.\r\n”,
“address”: “246IndianaPlace,Glenbrook,Iowa,3896”,
“age”: 36,
“balance”: “$2,954.93”,
“company”: “TALAE”,
“email”: “masseysaunders@talae.com”,
“eyeColor”: “green”,
“favoriteFruit”: “apple”,
“friends”: [
{
“id”: 0,
“name”: “DorotheaShields”
},
{
“id”: 1,
“name”: “AnnaRosales”
},
{
“id”: 2,
“name”: “GravesBryant”
}
],
“gender”: “male”,
“greeting”: “Hello,MasseySaunders!Youhave8unreadmessages.”,
“guid”: “4e482708-c6aa-4ef9-a45e-d5ce2c72c68d”,
“index”: 0,
“isActive”: false,
“latitude”: -10.269827,
“longitude”: -103.12419,
“name”: “MasseySaunders”,
“phone”: “+1(853)508-3237”,
“picture”: “http://placehold.it/32x32”,
“registered”: “2017-02-06T06:42:20-08:00”,
“tags”: [
“laborum”,
“excepteur”,
“veniam”,
“reprehenderit”,
“voluptate”,
“laborum”,
“in”
]
}


### 15. 极简模式执行 Python Shell


在终端输入 Python 就会进入 Python Shell 。


方便是挺方便,就是有点说不出的难受,谁能告诉我,为什么要多出这么大一段无关的内容。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/eace15daf0dd4ca7b2e1f3723e1d4b30.png)  
 这有点像,你上爱某艺看视频吧,都要先看个 90 秒的广告。


如果你和我一样不喜欢这种 『牛皮癣』,那么可以加个 -q 参数,静默进入 Python Shell,就像下面这样子,开启了极简模式,舒服多了。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8d26cbdf5bf04df8a6fd07a58a913ad0.png)


### 16. 在执行任意代码前自动念一段平安经


最近的"平安经"可谓是引起了不小的风波啊。


作为一个正儿八经的程序员,最害怕的就是自己的代码上线出现各种各样的 BUG。


为此明哥就研究了一下,如何在你执行任意 Python 代码前,让 Python 解释器自动念上一段平安经,保佑代码不出 BUG 。


没想到还真被我研究出来了


做好心理准备了嘛?


我要开始作妖了,噢不,是开始念经了。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3bfdbdd2bb3548999cf648463bb2bb72.png)  
 感谢佛祖保佑,Everything is ok,No bugs in the code.


你一定很想知道这是如何的吧?


如果你对 Linux 比较熟悉,就会知道,当你在使用 SSH 远程登陆 Linux 服务器的时候?会读取 .bash\_profile 文件加载一些环境变量。


.bash\_profile 你可以视其为一个 shell 脚本,可以在这里写一些 shell 代码达到你的定制化需求。


而在 Python 中,也有类似 .bash\_profile 的文件,这个文件一般情况下是不存在的。


我们需要新建一个用户环境目录,这个目录比较长,不需要你死记硬背,使用 site 模块的方法就可以获取,然后使用 mkdir -p 命令创建它。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b8d7786872bb4d2f9421ff41a5d83419.png)  
 在这个目录下,新建一个 usercustomize.py 文件,注意名字必须是这个,换成其他的可就识别不到啦。


这个 usercustomize.py 的内容如下(明哥注:佛祖只保佑几个 Python 的主要应用方向,毕竟咱是 Python 攻城狮嘛…)  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ec7cd1f3990a492bbdfb080581ac46b5.png)  
 这个文件我放在了我的 github 上,你可以点此前往获取。


一切都完成后,无论你是使用 python xxx.py 执行脚本  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6f5fb5cb507f4145aa6322a25afa9656.png)  
 还是使用 python 进入 Python Shell ,都会先念一下平安经保平安。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a40d683aedf34015b8af1c8633a1159a.png)


### 17. 启动 Python Shell 前自动执行某脚本


前一节我们介绍了一种,只要运行解释器就会自动触发执行 Python 脚本的方法。


除此之外,可还有其他方法呢?


当然是有,只不过相对来说,会麻烦一点了。


先来看一下效果,在 ~/Library/Python/3.9/lib/python/site-packages 目录下并没有 usercustomize.py 文件,但是在执行 python 进入 Python Shell 模式后,还是会打印平安经。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/75e69c88227d43b5b1e2e17003563aca.png)  
 这是如何做到的呢?


很简单,只要做两件事


第一件事,在任意你喜欢的目录下,新建 一个Python 脚本,名字也随意,比如我叫 startup.py,内容还是和上面一样  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/05a748143929491aa6a9cdba79221826.png)  
 第二件事,设置一个环境变量 PYTHONSTARTUP,指向你的脚本路径



$ export PYTHONSTARTUP=/Users/MING/startup.py


这样就可以了。


但是这种方法只适用于 Python Shell ,只不适合 Python 执行脚本的方法。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/767d50991a6e475ca8d432b1b408b415.png)  
 如果要在脚本中实现这种效果,我目前想到最粗糙我笨拙的方法了 – 手动加载执行  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/76cc25a854cc4951a81c60fcdf80e7ec.png)


### 18. 把模块当做脚本来执行 7 种方法及原理


**1. 用法举例**  
 前面的文章里其实分享过不少类似的用法。比如:


1、 快速搭建一个 HTTP 服务



python2

$ python -m SimpleHTTPServer 8888

python3

$ python3 -m http.server 8888


**2、快速构建 HTML 帮助文档**



$ python -m pydoc -p 5200


**3、快速进入 pdb 调试模式**



$ python -m pdb demo.py


**4、最优雅且正确的包安装方法**



$ python3 -m pip install requests


**5、快速美化 JSON 字符串**



$ echo ‘{“name”: “MING”}’ | python -m json.tool


**6、快速打印包的搜索路径**



$ python -m site


**7、用于快速计算程序执行时长**



$ python3 -m timeit ‘“-”.join(map(str, range(100)))’


### 2. 原理剖析


上面的诸多命令,都有一个特点,在命令中都含有 -m 参数选项,而参数的值,SimpleHTTPServer, http.server, pydoc,pdb,pip, json.tool,site ,timeit这些都是模块或者包。


通常来说模块或者包,都是用做工具包由其他模块导入使用,而很少直接使用命令来执行(脚本除外)。


Python 给我们提供了一种方法,可以让我们将模块里的部分功能抽取出来,直接用于命令行式的调用。效果就是前面你所看到的。


那这是如何实现的呢?




做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。



别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。

* * *



**(1)Python所有方向的学习路线(新版)**

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



最近我才对这些路线做了一下新的更新,知识体系更全面了。



![在这里插入图片描述](https://img-blog.csdnimg.cn/8fc093dcfa1f476694c574db1242c05b.png)



**(2)Python学习视频**



包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。



![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)



**(3)100多个练手项目**

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。



![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)



**(4)200多本电子书**  

  

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。



基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。



**(5)Python知识点汇总**

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。



![在这里插入图片描述](https://img-blog.csdnimg.cn/c741a91b05a542ba9dc8abf2f2f4b1af.png)



**(6)其他资料**



还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。



![在这里插入图片描述](https://img-blog.csdnimg.cn/9fa77af248b84885a6ec779b2ead064d.png)

**这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。**




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值