史上最全Python快速入门教程

本文介绍了Python作为一门高级、动态和面向对象的脚本语言,其易学且功能强大,适用于Web开发、企业应用、3D CAD等领域。讲解了Python的安装配置、命令行参数解析、变量类型及其转换,以及基本运算符。
摘要由CSDN通过智能技术生成

Python是面向对象,高级语言,解释,动态和多用途编程语言。Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力。

Python的语法和动态类型具有其解释性质,使其成为许多领域的脚本编写和快速应用程序开发的理想语言。

Python支持多种编程模式,包括面向对象编程,命令式和函数式编程或过程式编程。

Python几乎无所不能,一些常用的开发领域,如Web编程。这就是为什么它被称为多用途,因为它可以用于网络,企业,3D CAD等软件和系统开发。

在Python中,不需要使用数据类型来声明变量,因为它是动态类型的,所以可以写一个如 a=10 来声明一个变量a中的值是一个整数类型。

Python使开发和调试快速,因为在python开发中没有包含编译步骤,并且编辑 <-> 测试 <-> 调试循环使用代码开发效率非常高。

在这里插入图片描述

Python是一种高级,解释,交互和面向对象的脚本语言。 Python被设计为高度可读性。 它使用英语关键字,而其他语言使用标点符号。它的语法结构比其他语言少。

  • Python是解释型语言 - Python代码在解释器中运行时处理,执行前不需要编译程序。 这与PERL和PHP类似。
  • Python是交动的 - 在Python提示符下面直接和解释器进行交互来编写程序。
  • Python是面向对象的 - Python支持面向对象的风格或编程技术,将代码封装在对象内。
  • Python是一门初学者的语言 - Python是初学者程序员的伟大语言,并支持从简单的文本处理到WWW浏览器到游戏的各种应用程序的开发。

第一节 Python 可以用来开发什么?

Python作为一个整体可以用于任何软件开发领域。下面来看看Python可以应用在哪些领域的开发。如下所列 -

1.基于控制台的应用程序

Python可用于开发基于控制台的应用程序。 例如:IPython。

2.基于音频或视频的应用程序

Python在多媒体部分开发,证明是非常方便的。 一些成功的应用是:TimPlayer,cplay等。

3.3D CAD应用程序

Fandango是一个真正使用Python编写的应用程序,提供CAD的全部功能。

4.Web应用程序

Python也可以用于开发基于Web的应用程序。 一些重要的开发案例是:PythonWikiEngines,Pocoo,PythonBlogSoftware等,如国内的成功应用案例有:豆瓣,知乎等。

5.企业级应用

Python可用于创建可在企业或组织中使用的应用程序。一些实时应用程序是:OpenErp,Tryton,Picalo等。

6.图像应用

使用Python可以开发图像应用程序。 开发的应用有:VPython,Gogh,imgSeek等

第二节 Python安装和环境配置

Python 3适用于Windows,Mac OS和大多数Linux操作系统。即使Python 2目前可用于许多其他操作系统,有部分系统Python 3还没有提供支持或者支持了但被它们在系统上删除了,只保留旧的Python 2版本。

可参考我上一篇文章。

第三节 Python命令行参数

Python提供了一个getopt模块,用于解析命令行选项和参数。

$ python test.py arg1 arg2 arg3Shell

Python sys模块通过sys.argv提供对任何命令行参数的访问。主要有两个参数变量 -

  • sys.argv是命令行参数的列表。
  • len(sys.argv)是命令行参数的数量。

这里sys.argv [0]是程序名称,即脚本的名称。比如在上面示例代码中,sys.argv [0]的值就是 test.py。

示例

看看以下脚本command_line_arguments.py的代码 -

#!/usr/bin/python3import sysprint ('Number of arguments:', len(sys.argv), 'arguments.')print ('Argument List:', str(sys.argv))Python

现在运行上面的脚本,这将产生以下结果 -

F:\>python F:\worksp\python\command_line_arguments.pyNumber of arguments: 1 arguments.Argument List: ['F:\\worksp\\python\\command_line_arguments.py']F:\>python F:\worksp\python\command_line_arguments.py arg1 arg2 arg3 arg4Number of arguments: 5 arguments.Argument List: ['F:\\worksp\\python\\command_line_arguments.py', 'arg1', 'arg2', 'arg3', 'arg4']F:\>Python

注意 - 如上所述,第一个参数始终是脚本名称,它也被计入参数的数量。

解析命令行参数

Python提供了一个getopt模块,可用于解析命令行选项和参数。该模块提供了两个功能和异常,以启用命令行参数解析。

getopt.getopt方法

此方法解析命令行选项和参数列表。以下是此方法的简单语法 -

getopt.getopt(args, options, [long_options])Python

getopt.GetoptError异常

当在参数列表中有一个无法识别的选项,或者当需要一个参数的选项不为任何参数时,会引发这个异常。
异常的参数是一个字符串,指示错误的原因。 属性msg和opt给出错误消息和相关选项。

示例

假设想通过命令行传递两个文件名,也想给出一个选项用来显示脚本的用法。脚本的用法如下 -

usage: file.py -i <inputfile> -o <outputfile>Shell

以下是command_line_usage.py的以下脚本 -

#!/usr/bin/python3import sys, getoptdef main(argv):   inputfile = ''   outputfile = ''   try:      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])   except getopt.GetoptError:      print ('GetoptError, usage: command_line_usage.py -i <inputfile> -o <outputfile>')      sys.exit(2)   for opt, arg in opts:      if opt == '-h':         print ('usage: command_line_usage.py -i <inputfile> -o <outputfile>')         sys.exit()      elif opt in ("-i", "--ifile"):         inputfile = arg      elif opt in ("-o", "--ofile"):         outputfile = arg   print ('Input file is "', inputfile)   print ('Output file is "', outputfile)if __name__ == "__main__":   main(sys.argv[1:])Python

现在,使用以下几种方式运行来脚本,输出如下所示:

F:\worksp\python>python command_line_usage.py -husage: command_line_usage.py -i <inputfile> -o <outputfile>F:\worksp\python>python command_line_usage.py -i inputfile.txt -oGetoptError, usage: command_line_usage.py -i <inputfile> -o <outputfile>F:\worksp\python>python command_line_usage.py -i inputfile.txt -o outputfile.txtInput file is " inputfile.txtOutput file is " outputfile.txtF:\worksp\python>Shell

第四节 Python变量类型

变量是保存存储值的内存位置。也就是说,当创建一个变量时,可以在内存中保留一些空间。

基于变量的数据类型,解释器分配内存并决定可以存储在保留的存储器中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储的数据类型为整数,小数或字符等等。

在这里插入图片描述

将值分配给变量

在Python中,变量不需要明确的声明类型来保留内存空间。当向变量分配值时,Python会自动发出声明。 等号(=)用于为变量赋值。

=运算符左侧的操作数是变量的名称,而=运算符右侧的操作数是将在存储在变量中的值。 例如 -

#!/usr/bin/python3counter = 100          # 一个整型数miles   = 999.99       # 一个浮点数name    = "Maxsu"       # 一个字符串site_url  = "http://www.yiibai.com" # 一个字符串print (counter)print (miles)print (name)print (site_url)Python

这里,100,999.99和“Maxsu”分别是分配给counter,miles和name变量的值。执行上面代码将产生以下结果 -

100999.99 Maxsuhttp://www.yiibai.comShell

多重赋值

Python允许同时为多个变量分配单个值。

例如 -

a = b = c = 1Python

这里,创建一个整数对象,其值为1,并且所有三个变量都分配给相同的内存位置。还可以将多个对象分配给多个变量。 例如 -

a, b, c = 10, 20, "maxsu"Python

这里,将两个值为10和20的整数对象分别分配给变量a和b,并将一个值为“maxsu”的字符串对象分配给变量c。

标准数据类型

存储在内存中的数据可以是多种类型。 例如,一个人的年龄可存储为一个数字值,他的地址被存储为字母数字字符串。 Python具有各种标准数据类型,用于定义可能的操作以及每个标准数据类型的存储方法。

Python有五种标准数据类型 -

  • 1.数字
  • 2.字符串
  • 3.列表
  • 4.元组
  • 5.字典

1.Python数字

数字数据类型存储数字值。当为其分配值时,将创建数字对象。 例如 -

var1 = 10var2 = 20Python

可以使用del语句删除对数字对象的引用。 del语句的语法是 -

del var1[,var2[,var3[....,varN]]]]Python

可以使用del语句删除单个对象或多个对象。

例如 -

del vardel var_a, var_bPython

Python支持三种不同的数值类型 -

  • int(有符号整数)
  • float(浮点实值)
  • complex(复数)

Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。

例子

以下是一些数字示例 -

int float complex 10 0.0 3.14j 100 15.20 45.j -786 -21.9 9.322e-36j 080 32.3+e18 .876j -0490 -90. -.6545+0J -0x260 -32.54e100 3e+26J 0x69 70.2-E12 4.53e-7j

复数是由x + yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。

2.Python字符串

Python中的字符串被标识为在引号中表示的连续字符集。Python允许双引号或双引号。 可以使用片段运算符([]和[:])来获取字符串的子集(子字符串),其索引从字符串开始处的索引0开始,并且以-1表示字符串中的最后一个字符。

加号(+)是字符串连接运算符,星号(*)是重复运算符。例如 -

#!/usr/bin/python3#coding=utf-8# save file: variable_types_str1.pystr = 'yiibai.com'print ('str = ', str)          # Prints complete stringprint ('str[0] = ',str[0])       # Prints first character of the stringprint ('str[2:5] = ',str[2:5])     # Prints characters starting from 3rd to 5thprint ('str[2:] = ',str[2:])      # Prints string starting from 3rd characterprint ('str[-1] = ',str[-1])      # 最后一个字符,结果为:'!'print ('str * 2 = ',str * 2)      # Prints string two timesprint ('str + "TEST" = ',str + "TEST") # Prints concatenated stringPython

将上面代码保存到 variable_types_str1.py 文件中,执行将产生以下结果 -

F:\worksp\python>python variable_types_str1.pystr =  yiibai.comstr[0] =  ystr[2:5] =  ibastr[2:] =  ibai.comstr[-1] =  mstr * 2 =  yiibai.comyiibai.comstr + "TEST" =  yiibai.comTESTF:\worksp\python>Shell

2.Python列表

列表是Python复合数据类型中最多功能的。 一个列表包含用逗号分隔并括在方括号([])中的项目。在某种程度上,列表类似于C语言中的数组。它们之间的区别之一是Python列表的所有项可以是不同的数据类型,而C语言中的数组只能是同种类型。

存储在列表中的值可以使用切片运算符([]和[])来访问,索引从列表开头的0开始,并且以-1表示列表中的最后一个项目。 加号(+)是列表连接运算符,星号(*)是重复运算符。例如 -

#!/usr/bin/python3#coding=utf-8# save file: variable_types_str1.pylist = [ 'yes', 'no', 786 , 2.23, 'minsu', 70.2 ]tinylist = [100, 'maxsu']print ('list = ', list)          # Prints complete listprint ('list[0] = ',list[0])       # Prints first element of the listprint ('list[1:3] = ',list[1:3])     # Prints elements starting from 2nd till 3rd print ('list[2:] = ',list[2:])      # Prints elements starting from 3rd elementprint ('list[-3:-1] = ',list[-3:-1])    print ('tinylist * 2 = ',tinylist * 2)  # Prints list two timesprint ('list + tinylist = ', list + tinylist) # Prints concatenated listsPython

将上面代码保存到 variable_types_str1.py 文件中,执行将产生以下结果 -

F:\worksp\python>python variable_types_list.pylist =  ['yes', 'no', 786, 2.23, 'minsu', 70.2]list[0] =  yeslist[1:3] =  ['no', 786]list[2:] =  [786, 2.23, 'minsu', 70.2]list[-3:-1] =  [2.23, 'minsu']tinylist * 2 =  [100, 'maxsu', 100, 'maxsu']list + tinylist =  ['yes', 'no', 786, 2.23, 'minsu', 70.2, 100, 'maxsu']F:\worksp\python>Shell

3.Python元组

元组是与列表非常类似的另一个序列数据类型。元组是由多个值以逗号分隔。然而,与列表不同,元组被括在小括号内(())。

列表和元组之间的主要区别是 - 列表括在括号([])中,列表中的元素和大小可以更改,而元组括在括号(())中,无法更新。元组可以被认为是只读列表。 例如 -

#!/usr/bin/python3#coding=utf-8# save file : variable_types_tuple.pytuple = ( 'maxsu', 786 , 2.23, 'yiibai', 70.2  )tinytuple = (999.0, 'maxsu')# tuple[1] = 'new item value' 不能这样赋值print ('tuple = ', tuple)           # Prints complete tupleprint ('tuple[0] = ', tuple[0])        # Prints first element of the tupleprint ('tuple[1:3] = ', tuple[1:3])      # Prints elements starting from 2nd till 3rd print ('tuple[-3:-1] = ', tuple[-3:-1])       # 输出结果是什么?print ('tuple[2:] = ', tuple[2:])       # Prints elements starting from 3rd elementprint ('tinytuple * 2 = ',tinytuple * 2)   # Prints tuple two timesprint ('tuple + tinytuple = ', tuple + tinytuple) # Prints concatenated tuplePython

将上面代码保存到 variable_types_tuple.py 文件中,执行将产生以下结果 -

F:\worksp\python>python variable_types_tuple.pytuple =  ('maxsu', 786, 2.23, 'yiibai', 70.2)tuple[0] =  maxsutuple[1:3] =  (786, 2.23)tuple[-3:-1] =  (2.23, 'yiibai')tuple[2:] =  (2.23, 'yiibai', 70.2)tinytuple * 2 =  (999.0, 'maxsu', 999.0, 'maxsu')tuple + tinytuple =  ('maxsu', 786, 2.23, 'yiibai', 70.2, 999.0, 'maxsu')F:\worksp\python>Shell

以下代码对于元组无效,因为尝试更新元组,但是元组是不允许更新的。类似的情况可能与列表 -

#!/usr/bin/python3tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]tuple[2] = 1000    # 无法更新值,程序出错list[2] = 1000     # 有效的更新,合法Python

Python字典

Python的字典是一种哈希表类型。它们像Perl中发现的关联数组或散列一样工作,由键值对组成。字典键几乎可以是任何Python数据类型,但通常为了方便使用数字或字符串。另一方面,值可以是任意任意的Python对象。

字典由大括号({})括起来,可以使用方括号([])分配和访问值。例如 -

#!/usr/bin/python3#coding=utf-8# save file : variable_types_dict.pydict = {}dict['one'] = "This is one"dict[2]     = "This is my"tinydict = {'name': 'maxsu', 'code' : 1024, 'dept':'IT Dev'}print ("dict['one'] = ", dict['one'])       # Prints value for 'one' keyprint ('dict[2] = ', dict[2])           # Prints value for 2 keyprint ('tinydict = ', tinydict)          # Prints complete dictionaryprint ('tinydict.keys() = ', tinydict.keys())   # Prints all the keysprint ('tinydict.values() = ', tinydict.values()) # Prints all the valuesPython

将上面代码保存到 variable_types_dict.py 文件中,执行将产生以下结果 -

F:\worksp\python>python variable_types_dict.pydict['one'] =  This is onedict[2] =  This is mytinydict =  {'name': 'maxsu', 'code': 1024, 'dept': 'IT Dev'}tinydict.keys() =  dict_keys(['name', 'code', 'dept'])tinydict.values() =  dict_values(['maxsu', 1024, 'IT Dev'])Shell

字典中的元素没有顺序的概念。但是说这些元素是“乱序”是不正确的; 它们是无序的。

数据类型转换

有时,可能需要在内置类型之间执行转换。要在类型之间进行转换,只需使用类型名称作为函数即可。

有以下几种内置函数用于执行从一种数据类型到另一种数据类型的转换。这些函数返回一个表示转换值的新对象。它们分别如下所示 -

编号 函数 描述 1 int(x [,base]) 将x转换为整数。如果x是字符串,则要base指定基数。 2 float(x) 将x转换为浮点数。 3 complex(real [,imag]) 创建一个复数。 4 str(x) 将对象x转换为字符串表示形式。 5 repr(x) 将对象x转换为表达式字符串。 6 eval(str) 评估求值一个字符串并返回一个对象。 7 tuple(s) 将s转换为元组。 8 list(s) 将s转换为列表。 9 set(s) 将s转换为集合。 10 dict(d) 创建一个字典,d必须是(key,value)元组的序列 11 frozenset(s) 将s转换为冻结集 12 chr(x) 将整数x转换为字符 13 unichr(x) 将整数x转换为Unicode字符。 14 ord(x) 将单个字符x转换为其整数值。 15 hex(x) 将整数x转换为十六进制字符串。 16 oct(x) 将整数x转换为八进制字符串。

第五节 Python基本运算符

运算符是可以操纵操作数值的结构。如下一个表达式:10 + 20 = 30。这里,10和20称为操作数,+则被称为运算符。

运算符类型

Python语言支持以下类型的运算符 -

  • 1.算术运算符
  • 2.比较(关系)运算符
  • 3.赋值运算符
  • 4.逻辑运算符
  • 5.按位运算符
  • 6.成员运算符
  • 7.身份运算符

下面让我们依次来看看所有的运算符。

1.算术运算符

假设变量a的值是10,变量b的值是21,则 -

运算符 描述 示例 + 加法运算,将运算符两边的操作数增加。 a + b = 31 - 减法运算,将运算符左边的操作数减去右边的操作数。 a – b = -11 * 乘法运算,将运算符两边的操作数相乘 a * b = 210 / 除法运算,用右操作数除左操作数 b / a = 2.1 % 模运算,用右操作数除数左操作数并返回余数 b % a = 1 ** 对运算符进行指数(幂)计算 a ** b,表示10的21次幂 // 地板除 - 操作数的除法,其结果是删除小数点后的商数。 但如果其中一个操作数为负数,则结果将被保留,即从零(向负无穷大)舍去 9//2 = 4 , 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0

2.比较(关系)运算符

比较(关系)运算符比较它们两边的值,并确定它们之间的关系。它们也称为关系运算符。假设变量a的值10,变量b的值是20,则 -

运算符 描述 示例 == 如果两个操作数的值相等,则条件为真。 (a == b)求值结果为 false != 如果两个操作数的值不相等,则条件为真。 (a != b)求值结果为 true > 如果左操作数的值大于右操作数的值,则条件成为真。 (a > b)求值结果为 false < 如果左操作数的值小于右操作数的值,则条件成为真。 (a < b)求值结果为 true >= 如果左操作数的值大于或等于右操作数的值,则条件成为真。 (a >= b)求值结果为 false <= 如果左操作数的值小于或等于右操作数的值,则条件成为真。 (a <= b)求值结果为 true

3.赋值运算符

假设变量a的值10,变量b的值是20,则 -

运算符 描述 示例 = 将右侧操作数的值分配给左侧操作数 c = a + b表示将a + b的值分配给c += 将右操作数相加到左操作数,并将结果分配给左操作数 c + = a等价于c = c + a -= 从左操作数中减去右操作数,并将结果分配给左操作数 c -= a 等价于 c = c - a *= 将右操作数与左操作数相乘,并将结果分配给左操作数 c *= a 等价于 c = c * a /= 将左操作数除以右操作数,并将结果分配给左操作数 c /= a 等价于 c = c / a %= 将左操作数除以右操作数的模数,并将结果分配给左操作数 c %= a 等价于 c = c % a **= 执行指数(幂)计算,并将值分配给左操作数 c **= a 等价于 c = c ** a //= 运算符执行地板除运算,并将值分配给左操作数 c //= a 等价于 c = c // a

4.逻辑运算符

Python语言支持以下逻辑运算符。假设变量a的值为True,变量b的值为False,那么 -

运算符 描述 示例 and 如果两个操作数都为真,则条件成立。 (a and b)的结果为False or 如果两个操作数中的任何一个非零,则条件成为真。 (a or b)的结果为True not 用于反转操作数的逻辑状态。 not(a and b) 的结果为True。

5.按位运算符

按位运算符执行逐位运算。 假设变量a = 60; 和变量b = 13; 现在以二进制格式,它们将如下 -

a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011Shell

Python的内置函数bin()可用于获取整数的二进制表示形式。

以下是Python语言支持位运算操作符 -

运算符 描述 示例 & 如果它存在于两个操作数中,则操作符复制位到结果中 (a & b) 结果表示为 0000 1100

如果它存在于任一操作数,则复制位。 (a

b) = 61 结果表示为 0011 1101 ^ 二进制异或。如果它是一个操作数集合,但不是同时是两个操作数则将复制位。 (a ^ b) = 49 (结果表示为 0011 0001) ~ 二进制补码,它是一元的,具有“翻转”的效果。 (~a ) = -61有符号的二进制数,表示为1100 0011的补码形式。 << 二进制左移,左操作数的值由右操作数指定的位数左移。 a << 2 = 240 (结果表示为 1111 0000) >> 二进制右移,左操作数的值由右操作数指定的位数右移。 a >> 2 = 15(结果表示为0000 1111)

6.成员运算符

Python成员运算符测试给定值是否为序列中的成员,例如字符串,列表或元组。 有两个成员运算符,如下所述 -

运算符 描述 示例 in 如果在指定的序列中找到一个变量的值,则返回true,否则返回false。 - not in 如果在指定序列中找不到变量的值,则返回true,否则返回false。 -

7.身份运算符

身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述 -

运算符 描述 示例 is 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False。 is not 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False。 -

8. 运算符优先级

下表列出了从最高优先级到最低优先级的所有运算符,如下所示 -

序号 运算符 描述 1 ** 指数(次幂)运算 2 ~ + - 补码,一元加减(最后两个的方法名称是+@和-@) 3 * / % // 乘法,除法,模数和地板除 4 + - 5 >> << 向右和向左位移 6 & 按位与 7 ^

在这里插入图片描述
按位异或和常规的“OR” 8 <= < > >= 比较运算符 9 <> == != 等于运算符 10 = %= /= //= -= += *= **= 赋值运算符 11 is is not 身份运算符 12 in not in 成员运算符 13 not or and 逻辑运算符

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值