Python社区采访Michael Kennedy

This week, our Python community interview is with none other than Michael Kennedy of Talk Python to Me fame.

本周,我们对Python社区的采访只不过是Talk Python to Me的成名迈克尔·肯尼迪

You may know his authoritative voice, but do you know his Python story? Read on to find out about his journey with Python, what he thinks about when stuck in traffic, and his love for two wheels.

您可能知道他的权威声音,但是您知道他的Python故事吗? 请继续阅读以了解有关他使用Python的历程,在遇到交通问题时的想法以及对两个轮子的热爱。

Free Bonus: 5 Thoughts On Python Mastery, a free course for Python developers that shows you the roadmap and the mindset you’ll need to take your Python skills to the next level.

免费奖金: 关于Python精通的5个想法 ,这是针对Python开发人员的免费课程,向您展示了将Python技能提升到新水平所需的路线图和心态。

Ricky: Welcome to Real Python! If I recall correctly, you started out as a .NET developer, and you were even a Microsoft Certified Trainer. So I’m curious as to how you came to Python and what made you stick around?

Ricky:欢迎使用Real Python! 如果我没记错的话,您最初是.NET开发人员,甚至是Microsoft认证培训师。 所以我很好奇您是如何使用Python的,是什么让您坚持到底?

Michael Kennedy

Michael: Thanks for having me. Oh, this brings back memories. Yes, I was doing full time .NET development with C# for probably 10 years. It’s a language I still respect today.

迈克尔:谢谢有我。 哦,这带回了回忆。 是的,我从事C#的全职.NET开发可能已有10年了。 这是我今天仍然尊重的语言。

I found my way to Python after wanting to branch out into areas outside of the Microsoft space. I guess this was probably 2012 or around then. I hadn’t been doing much outside of C++ and C# before then for some time other than JavaScript. (No one escapes JavaScript!) I looked at the popular languages, and this was just around the time Python was becoming popular and increasingly so.

在想扩展到Microsoft空间之外的区域后,我找到了使用Python的方法。 我猜大概是在2012年左右。 在那之前的一段时间里,除了JavaScript之外,我并没有做过多的工作。 (没有人逃脱过JavaScript!)我查看了流行的语言,而这恰恰是Python变得越来越流行的时代。

I spent a few weeks learning Python and was pretty much hooked but didn’t know it.

我花了几个星期学习Python,几乎迷上了,但不知道。

I studied the language and ecosystem and found it to be really nice—much nicer than I expected. But I suffered the problem that everyone who knows some language really well does when they try something different. Everything I knew by heart was a challenge again. How do I create a web app? How do I host it? How do I query a database? And on and on.

我研究了语言和生态系统,发现它真的很好-比我预期的好得多。 但是我遇到的问题是,每个懂某种语言的人在尝试不同的东西时都会做得很好。 我内心所知道的一切再次成为挑战。 如何创建网络应用程序? 如何托管? 如何查询数据库? 等等。

I was willing to learn and did. But it was just that uneasiness that anyone would have, giving up the familiar path. However, I knew I was going to be hooked when I went back to write some C# code and found it way less tasteful than I had just a few weeks prior.

我愿意学习并愿意做。 但这只是任何人都会感到的不安,放弃了熟悉的道路。 但是,我知道当我回去写一些C#代码时,我会被迷住了,发现它不如几周前那么有品味。

This is not to bash that language. But like all C-based languages, it had a lot of symbol noise, let’s say. Why do we need semicolons again? Why the massive love for parentheses and curly braces even when it’s (now) clear they are unneeded, etc. Here’s an example:

这不是要抨击该语言。 但是,就像所有基于C的语言一样,它有很多符号噪音。 为什么我们再次需要分号? 为什么即使现在(现在)显然不需要括号和花括号,仍然对括号和花括号也是如此,等等。下面是一个示例:

 class class Thing Thing {

    {

    public public int int TotalSales TotalSales {
        {
        get 
        get 
        {
            {
            int int total total = = 00 ;
            ;
            foreach foreach (( var var b b in in itemsitems ) 
            ) 
            {
                {
                total total += += bb .. valuevalue ;
            ;
            }
            }
            return return totaltotal ;
        ;
        }
    }
    }
}
}
}

Makes one wonder why you’ve been typing all those symbols, all those years.

令人奇怪的是,为什么这么多年来一直在输入所有这些符号。

Since then, as I’ve learned more and more of the popular packages and standard library modules, I’ve just enjoyed it more every day. Now I run my entire business on a Python stack, and it has yet to let me down.

从那时起,随着我越来越了解流行的软件包和标准库模块,我每天都在享受它。 现在,我将整个业务都运行在Python堆栈上,但至今还没有让我失望。

Ricky: You are, of course, the host of the most popular Python podcast—Talk Python to Me—which now has over 180 episodes. You’re also a co-host on the Python Bytes podcast with Brian Okken. That’s a lot of content! How do you continue to be so consistent each week, and keep the shows relevant and newsworthy? It must be a lot of work?

Ricky:当然,您是最受欢迎的Python播客(与Python对话)的主持人,该节目现在有180多个剧集。 您也是Brian Brian的Python Bytes播客的共同主持人。 内容很多! 您如何继续保持每周如此稳定,并保持节目的相关性和新闻价值? 必须要做很多工作吗?

Michael: That is definitely a lot of content. But it’s a very rewarding project that is into its fourth year for Talk Python To Me, and third year for Python Bytes.

迈克尔:绝对是很多内容。 但是对于Talk Python To MePython Bytes来说 ,这是一个非常有意义的项目,已经进入第四年。

How am I still consistent? That’s a good question. I started the podcast because others were inconsistent. There have been Python-based podcasts before mine. But they all stopped producing episodes long before I got in the game. In fact, that’s why I felt I could get started, because there was such a lack of content.

我如何保持一致? 这是个好问题。 我开始播客是因为其他人前后矛盾。 在我之前有基于Python的播客。 但是他们都早在我加入游戏之前就停止制作剧集。 实际上,这就是为什么我觉得我可以开始,因为那里缺乏内容。

I am consistent for a few reasons. First, when I started the podcast, I promised myself I’d do it every week for six months and then decide whether the community and I enjoyed it. After that much consistent content creation, you are pretty deep within the habit of doing so.

由于某些原因,我保持一致。 首先,当我开始播客时,我向自己保证我会在六个月内每周进行一次播客,然后决定是否和我一起来享受它。 在创建了如此一致的内容之后,您已经习惯了这样做。

Second, by then I had several companies sponsoring the podcast. I thought maybe, just maybe, I could find a way to use the podcast to become independent of my day job. I didn’t hate my day job, but it doesn’t compare to doing what you think is truly valuable for the community and world. Once you accept money to produce a thing over a long period of time, consistency is just part of the agreement.

其次,那时我有几家公司赞助播客。 我以为也许,也许也许,我可以找到一种方法来使用播客来独立于我的日常工作。 我不讨厌自己的日常工作,但与做您认为对社区和世界真正有价值的事情没有比。 一旦您接受了长时间生产的资金,一致性就只是协议的一部分。

Finally, the listeners were so supportive of my work. It genuinely felt great producing the content for everyone. I looked forward to each episode I created. After all, I was learning so much from each one and continue to do so to this day.

最后,听众非常支持我的工作。 为每个人制作内容真是太好了。 我期待着自己制作的每一集。 毕竟,我从每个人身上都学到了很多东西,并且一直持续到今天。

As for keeping the show relevant and newsworthy, that is easy. For Python Bytes, that’s literally the topic (weekly news items), and we get tons of help from listeners all suggesting great new items each week.

至于保持节目相关性和新闻价值,这很容易。 对于Python Bytes,这实际上是主题(每周新闻项),我们从听众那里获得了大量帮助,这些人每周都会建议一些很棒的新项。

For Talk Python To Me, this is harder. Each episode digs deeply into a topic. For the first 20 episodes or so, that was easy enough for me. I’d used SQLAlchemy for example, so asking Mike Bayer about it was just thinking back on my experience. But it quickly grew into spaces I had little experience with. I now spend quite a bit of time researching topics to cover each week. Any given episode has between 4–8 hours of research before we even press record.

对于Talk Python To Me,这很难。 每集都深入探讨了一个主题。 对于前20集左右,这对我来说很容易。 例如,我用过SQLAlchemy,所以问Mike Bayer只是在回想我的经验。 但是它很快发展成为我经验很少的领域。 我现在花很多时间研究每周要涉及的主题。 任何给定的情节都需要4到8个小时的研究时间,然后才能进行录音。

That leads into the final part of your question: Yes, it is a lot of work. I’ve had folks ask me how much time I spend on the show each week. They’ve even said, “You have such a sweet deal. What do you spend on the podcast per episode? A few hours?” Well, that would be something! I probably spend about 2 days per episode between the research, outreach to guests, email correspondence, website development, sponsorship relationships, and much more.

这就引出了您问题的最后一部分:是的,这是很多工作。 我有乡亲问我每周在演出上花费多少时间。 他们甚至说:“您的交易真是太棒了。 您每集在播客上花了多少钱? 几个小时?” 好吧,那将是一件事情! 我可能每集大约要花2天的时间进行研究,与宾客进行外展,电子邮件往来,网站开发,赞助关系等等。

That is a lot of time, but it is also literally the foundation of my business. The podcasts and the courses only work if they are both well known and high quality. It’s very fortunate that I’ve been able to transition my part-time podcast into a full-time job (podcast and courses). It lets me really stay focused and stay consistent.

那是很多时间,但这实际上也是我业务的基础。 播客和课程只有在众所周知且高质量的情况下才起作用。 非常幸运的是,我已经能够将兼职播客转变为全职工作(播客和课程)。 它让我真正专注并保持一致。

Ricky: If our readers don’t know you from the podcast, they surely will know you for your excellent courses on Talk Python Training. One of the first courses I took when I began learning Python was your Python Jumpstart by Building 10 Apps course—which is excellent by the way. And you’ve just released a new course named Async Techniques and Examples. Could you tell us a little more about it and why you decided to focus on Async, specifically?

Ricky:如果我们的读者在播客中不认识您,那么他们一定会因为您在Talk Python Training上的出色课程而认识您的。 当我开始学习Python时,我参加的第一门课程是“ Build 10 Apps”课程中的“ Python Jumpstart”,这是非常棒的。 您刚刚发布了一门名为“异步技术和示例”的新课程。 您能否告诉我们更多有关它的信息,以及为什么您决定专注于异步?

Michael: Thanks! The courses have been a true passion project for me. I’ve wanted to create the best online library for Python courses out there for a long time.

迈克尔:谢谢! 这些课程对我来说是一个真正的激情项目。 很长时间以来,我一直想为Python课程创建最好的在线库。

When I first started the podcast, I also wanted to start the courses. I saw them as going hand in hand, with each supporting the other. However, at the time I worked for a company that did in-person and online training courses for developers.

当我第一次开始播客时,我也想开始课程。 我认为他们是携手并进的,彼此支持。 但是,当时我在一家为开发人员提供现场和在线培训课程的公司工作。

They afforded me a lot of freedom and flexibility. But what would not fly is my creating effectively a competing company in my spare time. So I started with the podcast, and then once I could go full time independently, my first action was to launch the training company and Python Jumpstart by Building 10 Apps on Kickstarter. That was a really fun experience and a huge success.

他们给了我很多自由和灵活性。 但是,不成功的是我在业余时间有效地创建了一家竞争性公司。 因此,我从播客开始,然后我可以独立完成全职工作之后,我的第一个动作是通过Kickstarter构建10个应用来启动培训公司和Python Jumpstart 。 那是一次非常有趣的经历,并取得了巨大的成功。

The new async course is super fun and something I felt really needed to exist for the community. It needs to exist for a few reasons. The Python async/concurrent programming story is a little hard to understand and make sense of, for many people. We have the GIL, which actually is covered very nicely on Real Python. This means normal threading was only effective for IO bound work. CPU bound work requires another API, multiprocessing with its own oddities and techniques.

新的异步课程非常有趣,我觉得社区确实需要一些东西。 由于某些原因,它必须存在。 对于许多人来说,Python异步/并行编程故事有点难以理解和理解。 我们有GIL,在Real Python上可以很好地覆盖它。 这意味着普通线程仅对IO绑定工作有效。 与CPU绑定的工作需要另一个API,它具有自己的独特性和技术进行多处理。

Now, as of Python 3.5, we have the amazing async and await keywords. They are powerful and clean but add more choices and more fog to the situation. This doesn’t take into account the async features of Cython and its nogil keyword.

现在,从Python 3.5开始,我们有了惊人的asyncawait关键字。 它们功能强大且清洁,但为情况增加了更多选择和更多雾气。 这没有考虑Cython及其nogil关键字的异步功能。

So the first reason is there was a lot of confusion around async and Python. You hear of people leaving Python for Go explicitly because of Go’s “better” concurrency. Usually, the type of concurrency people are looking for is IO bound, which works extremely well in Python anyway.

因此,第一个原因是关于异步和Python的困惑。 您听说有人因为Go的“更好”并发性而明确地将Python保留为Go。 通常,人们正在寻找的并发类型是IO绑定的,无论如何它在Python中都非常有效。

The next reason is that async and concurrent programming is oddly taught in the wrong order. What I mean by this is that usually lots of confusing, low-level detail is presented up front. Then finally it’s put together into examples that are useful and compelling. But the learner has to make it that far for it to pay off. This is also often paired with dire warnings of thread safety and how hard race conditions are. All of this is true and accurate. But why start there?

下一个原因是异步和并发编程被错误地教导。 我的意思是,通常会在前面呈现许多令人困惑的底层细节。 最后,将其组合成有用且引人注目的示例。 但是学习者必须走得那么远才能获得回报。 这通常还与可怕的线程安全性警告以及艰苦的比赛条件一起使用。 所有这些都是真实和准确的。 但是为什么要从那里开始呢?

I wanted a course that shows how productive, fun, and actually easy async is for many cases. Once the student sees the value, then you can dive into things like thread safety and so on.

我想要一门课程,说明在许多情况下如何高效,有趣且实际上容易异步。 一旦学生看到了价值,您就可以深入研究线程安全性之类的东西。

Finally, there really just are not many async courses for Python out there. I only know of one other one, and it’s behind a subscription wall.

最后,实际上,关于Python的异步课程并不多。 我只认识一个人,它在订阅墙的后面。

Ricky: It’s no secret that you’re a big fan of MongoDB. What do you find most appealing about it? And if someone has never used it before, why might they consider using it with their next Python project?

Ricky:您是MongoDB的忠实拥护者已不是什么秘密。 您觉得最吸引人的是什么? 如果有人从未使用过它,为什么他们会考虑在下一个Python项目中使用它?

Michael: I am a big fan of MongoDB. Long ago, I was complaining to a friend about how painful deploying relational database apps was. About how it’s a pain to apply the migration scripts without downtime and things like that. He said, “Well, why don’t you just use MongoDB, and you won’t have that problem?”.

迈克尔:我是MongoDB的忠实拥护者。 很久以前,我向一个朋友抱怨说部署关系数据库应用程序是多么痛苦。 关于在不停机的情况下应用迁移脚本之类的痛苦之举。 他说:“那么,为什么不只使用MongoDB,又不会遇到这个问题?”。

I took his advice, and he was right! Since then, I’ve launched 4 or 5 major projects on MongoDB. Both of my podcast sites (talkpython.fm and pythonbytes.fm) and the course site run on MongoDB.

我接受了他的建议,他是对的! 从那时起,我在MongoDB上启动了4或5个主要项目。 我的两个播客站点( talkpython.fmpythonbytes.fm )和课程站点都在MongoDB上运行。

I know some folks have had bad experiences with MongoDB. There were a few “best practices” that were not the default in MongoDB in the early days, and there are lots of stories about these. Most of them have been fixed, and if you know to avoid them, you’re in good shape. The one major gotcha still out there is that MongoDB runs without authentication unless you explicitly create an account.

我知道有些人对MongoDB有不好的经验。 在早期,有一些“最佳实践”在MongoDB中不是默认的,并且有很多关于这些的故事。 它们中的大多数已被修复,如果您知道要避免它们,那么您的状况良好。 仍然存在一个主要难题是,除非您明确创建一个帐户,否则MongoDB无需身份验证即可运行。

That said, MongoDB has been totally bulletproof for me and my projects. It’s been powering these sites mentioned above for years without any downtime. I have literally never run a migration or upgrade script to deploy a new schema or data model.

就是说,MongoDB对我和我的项目完全是防弹的。 多年来,一直为上述网站提供支持,而没有造成任何停机。 实际上,我从未运行过迁移或升级脚本来部署新的架构或数据模型。

Mongo’s flexible schema model and MongoEngine’s class-based ODM (think ORM for MongoDB) are just right for my projects. The websites run with super low latency. It’s pretty common to get 10–20 ms response time for non-trivial pages (from request to response out of the server).

Mongo的灵活模式模型和MongoEngine的基于类的ODM(将MongoDB视为ORM)正适合我的项目。 网站以超低延迟运行。 对于非平凡的页面(从请求到服务器外的响应),获得10–20 ms的响应时间是很常见的。

I personally can totally recommend MongoDB for your projects. I also created a free course if people are interested at freemongodbcourse.com.

我个人可以为您的项目完全推荐MongoDB。 如果人们对freemongodbcourse.com感兴趣,我还创建了一个免费课程。

Ricky: Now the Python is out of the way, it’s time to talk about the fun stuff… Math! You have a master’s degree in Mathematics, and you did start your Ph.D. Any plans to finish it in the future, or has that ship sailed? I would imagine you still have a passion for it. Do you get to scratch that itch on a daily basis?

Ricky:现在,Python已不复存在,现在该讨论有趣的东西了……数学! 您拥有数学硕士学位,并且确实有博士学位。 有什么计划在将来完成它,还是那艘船航行了? 我想您仍然对此充满热情。 您每天都抓痒吗?

Michael: It’s sailed, over the horizon, and halfway to Antarctica! I did study math and still very much appreciate the beauty of everything about it. I was just thinking about the different types of infinity, the different sizes of infinity, on just the simple number line between [0, 1] while stuck in traffic last week.

迈克尔:它驶过地平线,驶向南极洲! 我曾经学习过数学,但仍然非常欣赏它所具有的一切美。 上周,我只是在[0,1]之间的简单数字线上考虑不同类型的无穷大,无穷大的大小。

But that’s not working in math, day to day. I believe software development is my true calling. I love doing it every day. What I learned in math was excellent preparation for development. The rules of mathematics and the “rules” (language, APIs, algorithms, big-O, etc.) of software are surprisingly similar. The types of thinking and problem solving are also quite comparable.

但这并不是每天都在数学上起作用的。 我相信软件开发是我真正的使命。 我每天都喜欢这样做。 我从数学中学到的东西是为开发做好的充分准备。 令人惊讶的是,数学规则与软件的“规则”(语言,API,算法,big-O等)相似。 思维和解决问题的类型也相当可比。

The career opportunity in software and entrepreneurship vs. mathematics is not comparable. It’s just better to build things people can use (software) rather than theories only 5–20 people in the world will understand and care about (math these days).

在软件和创业与数学方面的职业机会不可比。 更好地构建人们可以使用的东西(软件),而不是世界上只有5-20个人会理解和关心的理论(这些天)。

So I love it and still read books about it, but I’m not doing anything practical with math these days.

因此,我喜欢它,并且仍在阅读有关它的书 ,但是最近这些天我在数学上没有做任何实际的事情。

Ricky: Do you have any other hobbies or interests, aside from Python?

瑞奇:除了Python之外,您还有其他爱好或兴趣吗?

Michael: I’ve had many fun hobbies over the years. I do think it’s important to have a balance between computer time and other things in your life.

迈克尔:多年来,我有很多有趣的爱好。 我确实认为在计算机时间和生活中的其他事情之间取得平衡非常重要。

I’m pretty fortunate in that I basically have 3 really engaging aspects to my job that I would almost consider hobbies. I run the podcast and am really into improving that craft and connecting with the listeners. I am doing software development still almost daily. And running my business and the whole entrepreneurial side of things is amazing and fun.

我很幸运,因为我基本上对我的工作有3个真正引人入胜的方面,我几乎会考虑自己的业余爱好。 我运行播客,并且真的很想改进这种技巧并与听众建立联系。 我几乎每天仍在进行软件开发。 经营我的生意以及整个企业的发展过程令人惊奇和有趣。

In terms of actual hobbies, I love racing and anything with two wheels! I grew up racing BMX bikes in grades 1–5, then motocross through middle school and high school, and finally mountain bikes in college. My brothers and I built a motocross track in our backyard, and it was pretty common to come home from school, drop our backpacks, and spend an hour or two challenging each other to clear this series of jumps or just having a fun time.

就实际爱好而言,我喜欢赛车以及两个轮子的东西! 我从小在1-5年级赛车BMX自行车,然后在初中和高中越野赛车,最后在大学里骑山地自行车。 我和我的兄弟们在我们的后院里建造了一条越野摩托车道,从学校回家,放下背包,花一两个小时互相挑战以清除这一系列跳跃或只是玩得很​​开心是很常见的。

These days, I only watch motocross and am also a huge fan of IndyCar. I still ride but keep it to mellow adventures with my wife on our street motorcycles around the mountains here in Portland, OR. It’s great to be able to share that experience of riding with her and my daughters, who jump on the back of one of our bikes.

这些天,我只看越野摩托车,而且还是IndyCar的忠实拥护者。 我仍然骑车,但是为了和我的妻子一起在俄勒冈州波特兰市的群山周围骑着我们的街头摩托车使冒险变得愉快。 能够与她和我的女儿分享骑自行车的经历真是太好了,女儿和女儿骑在我们一辆自行车的后面。

Ricky: What do we have to look forward to in the future from Talk Python? Any secret projects you’d like to tell us about or anything you’d like to share and/or plug?

Ricky: Talk Python将来我们要期待什么? 您想告诉我们任何秘密项目,或者您想共享和/或插入任何内容?

Michael: I have some projects involving exciting courses coming out. I’d actually like to be more forthcoming with what I’m working on there, but there is a surprising amount of “copying” my popular courses let’s say.

迈克尔:我有一些项目涉及令人兴奋的课程。 实际上,我想在此工作的人更多,但是说我喜欢的热门课程有很多“复制”。

We have at least 4 courses in active development right now and a massive list of things we’d like to build. So in terms of courses, just expect us to keep working on new ones that we see the need for in the community. You can also expect some more world-class authors there creating content. I’m really honored to be able to work on the courses for everyone and make my dream of this resource and business a reality.

目前,我们至少有4项正在进行积极开发的课程,并且列出了很多我们想构建的东西。 因此,就课程而言,只希望我们继续研究社区中需要的新课程。 您也可以期待更多世界一流的作者在那里创作内容。 我很荣幸能够为每个人参加这些课程,并使我对这种资源和业务的梦想成为现实。

In terms of the podcast, no slowing down there. We have Talk Python and Python Bytes, and both are going strong. I just hope to bring better and deeper stories to the community on Talk Python and stay on top of the most exciting programming language out there with weekly updates on Python Bytes with my co-host Brian Okken.

就播客而言,不要放慢脚步。 我们有Talk Python和Python Bytes,而且两者都很强大。 我只是希望通过Talk Python为社区带来更好,更深入的故事,并与我的共同主持人Brian Okken每周对Python Bytes进行更新,以掌握最激动人心的编程语言。

Thank you all for having me here on Real Python. I’m a big fan of the resource you all have created. If readers are interested in my projects, please subscribe to the podcasts at talkpython.fm and pythonbytes.fm. If they have aspects of Python they’d like to learn either personally or for their team, check out our 100+ hours of courses at training.talkpython.fm.

谢谢大家让我参加Real Python。 我非常喜欢大家创建的资源。 如果读者对我的项目感兴趣,请在talkpython.fmpythonbytes.fm上订阅播客。 如果他们有Python方面的知识,他们想亲自或为他们的团队学习,请在training.talkpython.fm上查看我们100多个小时的课程。



Thank you, Michael, for joining me for this week’s interview. It’s been great having you on the other side of the interview mic.

谢谢迈克尔 ,与我一起参加本周的采访。 采访麦克风的另一边真是太好了。

As always, if there is someone you would like me to interview in the future, reach out to me in the comments below, or send me a message on Twitter.

与往常一样,如果您将来希望有人采访我,请在下面的评论中与我联系,或者在Twitter上给我发送消息

翻译自: https://www.pybloggers.com/2018/10/python-community-interview-with-michael-kennedy/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值