用Python创建声明性迷你语言的教程

WBOY
Lepaskan: 2016-06-06 11:24:28
asal
1294 orang telah melayarinya

大多数程序员考虑编程时,他们都要设想用于编写应用程序的 命令式样式和技术。最受欢迎的通用编程语言(包括 Python 和其它面向对象的语言)在样式上绝大多数都是命令式的。另一方面,也有许多编程语言是 声明性样式,包括函数语言和逻辑语言,还包括通用语言和专用语言。

让我们列出几个属于各个种类的语言。许多读者已经使用过这些工具中的许多工具,但不见得考虑过它们之间的种类差别。Python、C、C++、Java、Perl、Ruby、Smalltalk、Fortran、Basic 和 xBase 都是简单的命令式编程语言。其中,一些是面向对象的,但那只是组织代码和数据的问题,而非基本编程样式的问题。使用这些语言,您 命令程序执行指令序列:把某些数据 放入(put)变量中;从变量中 获取(fetch)数据; 循环(loop)一个指令块 直到(until)满足了某些条件; 如果(if)某个命题为 true,那么就进行某些操作。所有这些语言的一个妙处在于:便于用日常生活中熟悉的比喻来考虑它们。日常生活都是由做事、选择、再做另一件事所组成的,期间或许会使用一些工具。可以简单地将运行程序的计算机想象成厨师、瓦匠或汽车司机。

诸如 Prolog、Mercury、SQL、XSLT 这样的语言、EBNF 语法和各种格式的真正配置文件,都 声明某事是这种情况,或者应用了某些约束。函数语言(比如 Haskell、ML、Dylan、Ocaml 和 Scheme)与此相似,但是它们更加强调陈述编程对象(递归、列表,等等)之间的内部(函数)关系。我们的日常生活(至少在叙事质量方面)没有提供对这些语言的编程构造的直接模拟。然而,对于那些可以用这些语言进行描述的问题来说,声明性描述 远远比命令式解决方案来得简明且不易出错。例如,请研究下面这个线性方程组:
清单 1. 线性方程式系统样本

10x + 5y - 7z + 1 = 0
17x + 5y - 10z + 3 = 0
5x - 4y + 3z - 6 = 0

Salin selepas log masuk

这是个相当漂亮的说明对象(x、y 和 z)之间几个关系的简单表达式。在现实生活中您可能会用不同的方式求出这些答案,但是实际上用笔和纸“求解 x”很烦,而且容易出错。从调试角度来讲,用 Python 编写求解步骤或许会更糟糕。

Prolog 是与逻辑或数学关系密切的语言。使用这种语言,您只要编写您知道是正确的语句,然后让应用程序为您得出结果。语句不是按照特定的顺序构成的(和线性方程式一样,没有顺序),而且您(程序员或用户)并不知道得出的结果都采用了哪些步骤。例如:
清单 2. family.pro Prolog 样本

/* Adapted from sample at:
<http://www.engin.umd.umich.edu/CIS/course.des/cis479/prolog/>
This app can answer questions about sisterhood & love, e.g.:
# Is alice a sister of harry&#63;
&#63;-sisterof( alice, harry )
# Which of alice' sisters love wine&#63;
&#63;-sisterof( X, alice ), love( X, wine)
*/
sisterof( X, Y ) :- parents( X, M, F ),
          female( X ),
          parents( Y, M, F ).
parents( edward, victoria, albert ).
parents( harry, victoria, albert ).
parents( alice, victoria, albert ).
female( alice ).
loves( harry, wine ).
loves( alice, wine ).

Salin selepas log masuk

它和 EBNF(扩展巴科斯范式,Extended Backus-Naur Form)语法声明并不完全一样,但是实质相似。您可以编写一些下面这样的声明:
清单 3. EBNF 样本

word    := alphanums, (wordpunct, alphanums)*, contraction&#63;
alphanums  := [a-zA-Z0-9]+
wordpunct  := [-_]
contraction := "'", ("clock"/"d"/"ll"/"m"/"re"/"s"/"t"/"ve")

Salin selepas log masuk

如果您遇到一个单词而想要表述其看上去 可能会是什么,而实际上又不想给出如何识别它的序列指令,上面便是个简练的方法。正则表达式与此相似(并且事实上它能够满足这种特定语法产品的需要)。

还有另一个声明性示例,请研究描述有效 XML 文档方言的文档类型声明:
清单 4. XML 文档类型声明

<!ELEMENT dissertation (chapter+)>
<!ELEMENT chapter (title, paragraph+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT paragraph (#PCDATA | figure)+>
<!ELEMENT figure EMPTY>

Salin selepas log masuk

和其它示例一样,DTD 语言不包含任何有关如何识别或创建有效 XML 文档的指令。它只描述了如果文档存在,那它会是怎么样的。声明性语言采用虚拟语气。
Python 作为解释器 vs Python 作为环境

Python 库可以通过两种截然不同的方式中的一种来利用声明性语言。或许更为常用的技术是将非 Python 声明性语言作为数据来解析和处理。应用程序或库可以读入外部来源(或者是内部定义的但只用作“blob”的字符串),然后指出一组要执行的命令式步骤,这些步骤在某种形式上与那些外部声明是一致的。本质上,这些类型的库是“数据驱动的”系统;声明性语言和 Python 应用程序执行或利用其声明的操作之间有着概念和范畴差别。事实上,相当普遍的一点是,处理那些相同声明的库也被用来实现其它编程语言。

上面给出的所有示例都属于第一种技术。库 PyLog 是 Prolog 系统的 Python 实现。它读取像样本那样的 Prolog 数据文件,然后创建 Python 对象来对 Prolog 声明 建模。EBNF 样本使用专门变体 SimpleParse ,这是一个 Python 库,它将这些声明转换成可以被 mx.TextTools 所使用的状态表。 mx.TextTools 自身是 Python 的扩展库,它使用底层 C 引擎来运行存储在 Python 数据结构中的代码,但与 Python 本质上几乎没什么关系。对于这些任务而言,Python 是极佳的 粘合剂,但是粘合在一起的语言与 Python 差别很大。而且,大多数 Prolog 实现都不是用 Python 编写的,这和大多数 EBNF 解析器一样。

DTD 类似于其它示例。如果您使用象 xmlproc 这样的验证解析器,您可以利用 DTD 来验证 XML 文档的方言。但是 DTD 的语言并不是 Python 式的, xmlproc 只将它用作需要解析的数据。而且,已经用许多编程语言编写过 XML 验证解析器。XSLT 转换与此相似,也不是特定于 Python 的,而且像 ft.4xslt 这样的模块只将 Python 用作“粘合剂”。

虽然上面的方法和上面所提到的工具(我一直都在使用)都没什么 不对,但如果 Python 本身是声明性语言的话,那么它可能会更精妙,而且某些方面会表达得更清晰。如果没有其它因素的话,有助于此的库不会使程序员在编写一个应用程序时考虑是否采用两种(或更多)语言。有时,依靠 Python 的自省能力来实现“本机”声明,既简单又管用。

自省的魔力

解析器 Spark 和 PLY 让用户 用 Python 来声明 Python 值,然后使用某些魔法来让 Python 运行时环境进行解析配置。例如,让我们研究一下与前面 SimpleParse 语法等价的 PLY 语法。 Spark 类似于下面这个示例:
清单 5. PLY 样本

tokens = ('ALPHANUMS','WORDPUNCT','CONTRACTION','WHITSPACE')
t_ALPHANUMS = r"[a-zA-Z0-0]+"
t_WORDPUNCT = r"[-_]"
t_CONTRACTION = r"'(clock|d|ll|m|re|s|t|ve)"
def t_WHITESPACE(t):
  r"\s+"
  t.value = " "
  return t
import lex
lex.lex()
lex.input(sometext)
while 1:
  t = lex.token()
  if not t: break

Salin selepas log masuk

我已经在我即将出版的书籍 Text Processing in Python 中编写了有关 PLY 的内容,并且在本专栏文章中编写了有关 Spark 的内容(请参阅 参考资料以获取相应链接)。不必深入了解库的详细信息,这里您应当注意的是:正是 Python 绑定本身配置了解析(在这个示例中实际是词法分析/标记化)。 PLY 模块在 Python 环境中运行以作用于这些模式声明,因此就正好非常了解该环境。

PLY如何得知它自己做什么,这涉及到一些非常奇异的 Python 编程。起初,中级程序员会发现可以查明 globals() 和 locals() 字典的内容。如果声明样式略有差异的话就好了。例如,假想代码更类似于这样:
清单 6. 使用导入的模块名称空间

import basic_lex as _
_.tokens = ('ALPHANUMS','WORDPUNCT','CONTRACTION')
_.ALPHANUMS = r"[a-zA-Z0-0]+"
_.WORDPUNCT = r"[-_]"
_.CONTRACTION = r"'(clock|d|ll|m|re|s|t|ve)"
_.lex()

Salin selepas log masuk

这种样式的声明性并不差,而且可以假设 basic_lex 模块包含类似下面这样的简单内容:
清单 7. basic_lex.py

def lex():
  for t in tokens:
    print t, '=', globals()[t]

Salin selepas log masuk

这会产生:

% python basic_app.py
ALPHANUMS = [a-zA-Z0-0]+
WORDPUNCT = [-_]
CONTRACTION = '(clock|d|ll|m|re|s|t|ve)

Salin selepas log masuk

PLY 设法使用堆栈帧信息插入了导入模块的名称空间。例如:
清单 8. magic_lex.py

import sys
try: raise RuntimeError
except RuntimeError:
  e,b,t = sys.exc_info()
  caller_dict = t.tb_frame.f_back.f_globals
def lex():
  for t in caller_dict['tokens']:
    print t, '=', caller_dict['t_'+t]

Salin selepas log masuk

这产生了与 basic_app.py 样本所给输出一样的输出,但是具有使用前面 t_TOKEN 样式的声明。

实际的 PLY 模块中要比这更神奇。我们看到用模式 t_TOKEN 命名的标记实际上可以是包含了正则表达式的字符串,或是包含了正则表达式文档字符串和操作代码的函数。某些类型检查允许以下多态行为:
清单 9. polymorphic_lex

# ...determine caller_dict using RuntimeError...
from types import *
def lex():
  for t in caller_dict['tokens']:
    t_obj = caller_dict['t_'+t]
    if type(t_obj) is FunctionType:
      print t, '=', t_obj.__doc__
    else:
      print t, '=', t_obj

Salin selepas log masuk

显然,相对于用来玩玩的示例而言,真正的 PLY 模块用这些已声明的模式可以做更有趣的事,但是这些示例演示了其中所涉及的一些技术。

继承的魔力

让支持库到处插入并操作应用程序的名称空间,这会启用精妙的声明性样式。但通常,将继承结构和自省一起使用会使灵活性更佳。

模块 gnosis.xml.validity 是用来创建直接映射到 DTD 产品的类的框架。任何 gnosis.xml.validity 类 只能用符合 XML 方言有效性约束的参数进行实例化。实际上,这并不十分正确;当只存在一种明确的方式可将参数“提升”成正确类型时,模块也可从更简单的参数中推断出正确类型。

由于我已经编写了 gnosis.xml.validity 模块,所以我倾向于思考其用途自身是否有趣。但是对于本文,我只想研究创建有效性类的声明性样式。与前面的 DTD 样本相匹配的一组规则/类包括:
清单 10. gnosis.xml.validity 规则声明

from gnosis.xml.validity import *
class figure(EMPTY):   pass
class _mixedpara(Or):   _disjoins = (PCDATA, figure)
class paragraph(Some):  _type = _mixedpara
class title(PCDATA):   pass
class _paras(Some):    _type = paragraph
class chapter(Seq):    _order = (title, _paras)
class dissertation(Some): _type = chapter

Salin selepas log masuk

您可以使用以下命令从这些声明中创建出实例:

ch1 = LiftSeq(chapter, ("1st Title","Validity is important"))
ch2 = LiftSeq(chapter, ("2nd Title","Declaration is fun"))
diss = dissertation([ch1, ch2])
print diss

Salin selepas log masuk

请注意这些类和前面的 DTD 非常匹配。映射基本上是一一对应的;除了有必要对嵌套标记的量化和交替使用中介体之外(中介体名称用前导下划线标出来)。

还要注意的是,这些类虽然是用标准 Python 语法创建的,但它们也有不同寻常(且更简练)之处:它们没有方法或实例数据。单独定义类,以便从某框架继承类,而该框架受到单一的类属性限制。例如, 是其它标记序列,即 后面跟着一个或多个 <paragraph> 标记。但是为确保在实例中遵守约束,我们所需做的就是用这种简单的方式来 声明chapter 类。</p> <p>编写像 gnosis.xml.validity.Seq 这样的父类程序所涉及的主要“技巧”,就是在初始化期间研究 实例的 .__class__ 属性。类 chapter 自身并不进行初始化,因此调用其父类的 __init__() 方法。但是传递给父类 __init__() 的 self 是 chapter 的实例,而且 self 知道 chapter。为了举例说明这一点,下面列出了部分 gnosis.xml.validity.Seq 实现:<br /> 清单 11. 类 gnosis.xml.validity.Seq</p> <p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:py;"> class Seq(tuple): def __init__(self, inittup): if not hasattr(self.__class__, '_order'): raise NotImplementedError, \ "Child of Abstract Class Seq must specify order" if not isinstance(self._order, tuple): raise ValidityError, "Seq must have tuple as order" self.validate() self._tag = self.__class__.__name__ </pre><div class="contentsignin">Salin selepas log masuk</div></div> </p> <p>一旦应用程序程序员试图创建 chapter 实例,实例化代码就检查是否用所要求的 ._order 类属性声明了 chapter ,并检查该属性是否为所需的元组对象。方法 .validate() 要做进一步的检查,以确保初始化实例所用的对象属于 ._order 中指定的相应类。</p> <p><strong>何时声明</strong></p> <p>声明性编程样式在声明约束方面 几乎一直比命令式或过程式样式更直接。当然,并非所有的编程问题都是关于约束的 - 或者说至少这并非总是自然定律。但是如果基于规则的系统(比如语法和推理系统)可以进行声明性描述,那么它们的问题就比较容易处理了。是否符合语法的命令式验证很快就会变成非常复杂难懂的所谓“意大利面条式代码”(spaghetti code),而且很难调试。模式和规则的声明仍然可以更简单。</p> <p>当然,起码在 Python 中,声明规则的验证和增强总是会归结为过程式检查。但是把这种过程式检查放在进行了良好测试的库代码中比较合适。单独的应用程序应该依靠由像 Spark 或 PLY 或 gnosis.xml.validity 这样的库所提供的更简单的声明性接口。其它像 xmlproc 、 SimpleParse 或 ft.4xslt 这样的库,尽管不是 用 Python进行声明的(Python 当然适用于它们的领域),也能使用声明性样式。 <br> </p> </div> </div> <div style="height: 25px;"> <div class="wzconBq" style="display: inline-flex;"> <span>Label berkaitan:</span> <div class="wzcbqd"> <a onclick="hits_log(2,'www',this);" href-data="http://www.php.cn/ms/search?word=python" target="_blank">python</a> </div> </div> <div style="display: inline-flex;float: right; color:#333333;">sumber:php.cn</div> </div> <div class="wzconOtherwz"> <a href="http://www.php.cn/ms/faq/85630.html" title="Python中的Numeric包和Numarray包使用教程"> <span>Artikel sebelumnya:Python中的Numeric包和Numarray包使用教程</span> </a> <a href="http://www.php.cn/ms/faq/85636.html" title="用Python的SimPy库简化复杂的编程模型的介绍"> <span>Artikel seterusnya:用Python的SimPy库简化复杂的编程模型的介绍</span> </a> </div> <div class="wzconShengming"> <div class="bzsmdiv">Kenyataan Laman Web ini</div> <div>Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn</div> </div> <div class="wwads-cn wwads-horizontal" data-id="156" style="max-width:955px"></div> <div class="wzconZzwz"> <div class="wzconZzwztitle">Artikel terbaru oleh pengarang</div> <ul> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796639331.html">Apakah itu NullPointerException, dan bagaimana saya membetulkannya?</a> </div> <div>2024-10-22 09:46:29</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796629482.html">Daripada Novis kepada Coder: Perjalanan Anda Bermula dengan Asas C</a> </div> <div>2024-10-13 13:53:41</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796628545.html">Membuka Kunci Pembangunan Web dengan PHP: Panduan Pemula</a> </div> <div>2024-10-12 12:15:51</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627928.html">Demystifying C: Laluan Yang Jelas dan Mudah untuk Pengaturcara Baharu</a> </div> <div>2024-10-11 22:47:31</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627806.html">Buka Potensi Pengekodan Anda: Pengaturcaraan C untuk Pemula Mutlak</a> </div> <div>2024-10-11 19:36:51</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627670.html">Lepaskan Pengaturcara Dalaman Anda: C untuk Pemula Mutlak</a> </div> <div>2024-10-11 15:50:41</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627643.html">Automasi Kehidupan Anda dengan C: Skrip dan Alat untuk Pemula</a> </div> <div>2024-10-11 15:07:41</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627620.html">PHP Dipermudahkan: Langkah Pertama Anda dalam Pembangunan Web</a> </div> <div>2024-10-11 14:21:21</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627574.html">Bina Apa sahaja dengan Python: Panduan Pemula untuk Melancarkan Kreativiti Anda</a> </div> <div>2024-10-11 12:59:11</div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots"></span> <a target="_blank" href="http://www.php.cn/ms/faq/1796627539.html">Kunci Pengekodan: Membuka Kunci Kuasa Python untuk Pemula</a> </div> <div>2024-10-11 12:17:31</div> </li> </ul> </div> <div class="wzconZzwz"> <div class="wzconZzwztitle">Isu terkini</div> <div class="wdsyContent"> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ms/wenda/176206.html" target="_blank" title="Python/MySQL tidak dapat mengekalkan data integer dengan betul" class="wdcdcTitle">Python/MySQL tidak dapat mengekalkan data integer dengan betul</a> <a href="http://www.php.cn/ms/wenda/176206.html" class="wdcdcCons">Tiada kod diperlukan di sini. Saya mahu menyimpan nombor yang sangat panjang kerana saya s...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> daripada 2024-04-04 19:09:44</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>367</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ms/wenda/176165.html" target="_blank" title="Menggunakan selenium ingin mengklik dan menentukan URL dalam kelas" class="wdcdcTitle">Menggunakan selenium ingin mengklik dan menentukan URL dalam kelas</a> <a href="http://www.php.cn/ms/wenda/176165.html" class="wdcdcCons">Saya perlukan petua lain hari ini. Saya cuba membina kod Python/Selenium dan ideanya ialah...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> daripada 2024-04-04 14:14:44</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>3492</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ms/wenda/176001.html" target="_blank" title="Selenium + Python - periksa imej melalui execute_script" class="wdcdcTitle">Selenium + Python - periksa imej melalui execute_script</a> <a href="http://www.php.cn/ms/wenda/176001.html" class="wdcdcCons">Saya perlu mengesahkan bahawa imej dipaparkan pada halaman menggunakan selenium dalam pyth...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> daripada 2024-04-03 09:32:15</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>375</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ms/wenda/175819.html" target="_blank" title="Bagaimana untuk mengekalkan baris X pertama dan memadamkan baris jadual" class="wdcdcTitle">Bagaimana untuk mengekalkan baris X pertama dan memadamkan baris jadual</a> <a href="http://www.php.cn/ms/wenda/175819.html" class="wdcdcCons">Saya mempunyai jadual besar dengan berjuta-juta rekod dalam MySQLincident_archive, saya ma...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> daripada 2024-04-01 18:32:54</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>347</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> <div class="wdsyConDiv flexRow wdsyConDiv1"> <div class="wdcdContent flexColumn"> <a href="http://www.php.cn/ms/wenda/175783.html" target="_blank" title="Bagaimana untuk mengikis teks Cuaca Google tertentu menggunakan BeautifulSoup?" class="wdcdcTitle">Bagaimana untuk mengikis teks Cuaca Google tertentu menggunakan BeautifulSoup?</a> <a href="http://www.php.cn/ms/wenda/175783.html" class="wdcdcCons">Bagaimana untuk mencari teks kursus "New York City, USA" dalam Python menggunaka...</a> <div class="wdcdcInfo flexRow"> <div class="wdcdcileft"> <span class="wdcdciSpan"> daripada 2024-04-01 14:06:14</span> </div> <div class="wdcdciright flexRow"> <div class="wdcdcirdz flexRow ira"> <b class="wdcdcirdzi"></b>0 </div> <div class="wdcdcirpl flexRow ira"><b class="wdcdcirpli"></b>1</div> <div class="wdcdcirwatch flexRow ira"><b class="wdcdcirwatchi"></b>308</div> </div> </div> </div> </div> <div class="wdsyConLine wdsyConLine2"></div> </div> </div> <div class="wzconZt" > <div class="wzczt-title"> <div>Topik-topik yang berkaitan</div> <a href="http://www.php.cn/ms/faq/zt" target="_blank">Lagi> </a> </div> <div class="wzcttlist"> <ul> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythonkfgj"><img src="https://img.php.cn/upload/subject/202407/22/2024072214424826783.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="alat pembangunan python" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythonkfgj" class="title-a-spanl" title="alat pembangunan python"><span>alat pembangunan python</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythondb"><img src="https://img.php.cn/upload/subject/202407/22/2024072214312147925.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="python dibungkus ke dalam fail boleh laku" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythondb" class="title-a-spanl" title="python dibungkus ke dalam fail boleh laku"><span>python dibungkus ke dalam fail boleh laku</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythonnzsm"><img src="https://img.php.cn/upload/subject/202407/22/2024072214301218201.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="apa yang python boleh buat" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythonnzsm" class="title-a-spanl" title="apa yang python boleh buat"><span>apa yang python boleh buat</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/formatzpython"><img src="https://img.php.cn/upload/subject/202407/22/2024072214275096159.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="Bagaimana untuk menggunakan format dalam python" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/formatzpython" class="title-a-spanl" title="Bagaimana untuk menggunakan format dalam python"><span>Bagaimana untuk menggunakan format dalam python</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythonjc"><img src="https://img.php.cn/upload/subject/202407/22/2024072214254329480.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="tutorial python" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythonjc" class="title-a-spanl" title="tutorial python"><span>tutorial python</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythonhjblbz"><img src="https://img.php.cn/upload/subject/202407/22/2024072214252616529.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="Konfigurasi pembolehubah persekitaran python" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythonhjblbz" class="title-a-spanl" title="Konfigurasi pembolehubah persekitaran python"><span>Konfigurasi pembolehubah persekitaran python</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/pythoneval"><img src="https://img.php.cn/upload/subject/202407/22/2024072214251549631.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="python eval" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/pythoneval" class="title-a-spanl" title="python eval"><span>python eval</span> </a> </li> <li class="ul-li"> <a target="_blank" href="http://www.php.cn/ms/faq/scratchpyt"><img src="https://img.php.cn/upload/subject/202407/22/2024072214235344903.jpg?x-oss-process=image/resize,m_fill,h_145,w_220" alt="Perbezaan antara scratch dan python" /> </a> <a target="_blank" href="http://www.php.cn/ms/faq/scratchpyt" class="title-a-spanl" title="Perbezaan antara scratch dan python"><span>Perbezaan antara scratch dan python</span> </a> </li> </ul> </div> </div> </div> </div> <div class="phpwzright"> <div class="wzrOne"> <div class="wzroTitle">Cadangan popular</div> <div class="wzroList"> <ul> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="python中eval是什么意思?" href="http://www.php.cn/ms/faq/419793.html">python中eval是什么意思?</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="python如何读取txt文件内容" href="http://www.php.cn/ms/faq/479676.html">python如何读取txt文件内容</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="py文件怎么打开?" href="http://www.php.cn/ms/faq/418747.html">py文件怎么打开?</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="python中str是什么意思" href="http://www.php.cn/ms/faq/419809.html">python中str是什么意思</a> </div> </li> <li> <div class="wzczzwzli"> <span class="layui-badge-dots wzrolr"></span> <a style="height: auto;" title="python中format怎么用" href="http://www.php.cn/ms/faq/471817.html">python中format怎么用</a> </div> </li> </ul> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="wzrThree"> <div class="wzrthree-title"> <div>Tutorial Popular</div> <a target="_blank" href="http://www.php.cn/ms/course.html">Lagi> </a> </div> <div class="wzrthreelist swiper2"> <div class="wzrthreeTab swiper-wrapper"> <div class="check tabdiv swiper-slide" data-id="one">Tutorial berkaitan <div></div></div> <div class="tabdiv swiper-slide" data-id="two">Cadangan popular<div></div></div> <div class="tabdiv swiper-slide" data-id="three">Kursus terkini<div></div></div> </div> <ul class="one"> <li> <a target="_blank" href="http://www.php.cn/ms/course/812.html" title="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)" href="http://www.php.cn/ms/course/812.html">Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)</a> <div class="wzrthreerb"> <div>1417790 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="812"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/74.html" title="Tutorial pengenalan PHP satu: Belajar PHP dalam satu minggu" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6253d1e28ef5c345.png" alt="Tutorial pengenalan PHP satu: Belajar PHP dalam satu minggu"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial pengenalan PHP satu: Belajar PHP dalam satu minggu" href="http://www.php.cn/ms/course/74.html">Tutorial pengenalan PHP satu: Belajar PHP dalam satu minggu</a> <div class="wzrthreerb"> <div>4258963 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="74"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/286.html" title="Tutorial Video Permulaan JAVA" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a2bacfd9379.png" alt="Tutorial Video Permulaan JAVA"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial Video Permulaan JAVA" href="http://www.php.cn/ms/course/286.html">Tutorial Video Permulaan JAVA</a> <div class="wzrthreerb"> <div>2486739 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="286"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/504.html" title="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a67ce3a6655.png" alt="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python" href="http://www.php.cn/ms/course/504.html">Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python</a> <div class="wzrthreerb"> <div>504228 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="504"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/2.html" title="Tutorial pengenalan berasaskan sifar PHP" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/6253de27bc161468.png" alt="Tutorial pengenalan berasaskan sifar PHP"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial pengenalan berasaskan sifar PHP" href="http://www.php.cn/ms/course/2.html">Tutorial pengenalan berasaskan sifar PHP</a> <div class="wzrthreerb"> <div>858941 <b class="kclbcollectb"></b></div> <div class="courseICollection" data-id="2"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="two" style="display: none;"> <li> <a target="_blank" href="http://www.php.cn/ms/course/812.html" title="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)" href="http://www.php.cn/ms/course/812.html">Tutorial video perdana dunia ThinkPHP 5.1 terkini (60 hari untuk menjadi kursus latihan dalam talian pakar PHP)</a> <div class="wzrthreerb"> <div >1417790 kali belajar</div> <div class="courseICollection" data-id="812"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/286.html" title="Tutorial Video Permulaan JAVA" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a2bacfd9379.png" alt="Tutorial Video Permulaan JAVA"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Tutorial Video Permulaan JAVA" href="http://www.php.cn/ms/course/286.html">Tutorial Video Permulaan JAVA</a> <div class="wzrthreerb"> <div >2486739 kali belajar</div> <div class="courseICollection" data-id="286"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/504.html" title="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62590a67ce3a6655.png" alt="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python" href="http://www.php.cn/ms/course/504.html">Pengenalan berasaskan sifar Little Turtle untuk mempelajari tutorial video Python</a> <div class="wzrthreerb"> <div >504228 kali belajar</div> <div class="courseICollection" data-id="504"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/901.html" title="Pengenalan pantas kepada pembangunan bahagian hadapan web" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/64be28a53a4f6310.png" alt="Pengenalan pantas kepada pembangunan bahagian hadapan web"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Pengenalan pantas kepada pembangunan bahagian hadapan web" href="http://www.php.cn/ms/course/901.html">Pengenalan pantas kepada pembangunan bahagian hadapan web</a> <div class="wzrthreerb"> <div >215363 kali belajar</div> <div class="courseICollection" data-id="901"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/234.html" title="Kuasai tutorial video PS dari awal" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/068/62611f57ed0d4840.jpg" alt="Kuasai tutorial video PS dari awal"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Kuasai tutorial video PS dari awal" href="http://www.php.cn/ms/course/234.html">Kuasai tutorial video PS dari awal</a> <div class="wzrthreerb"> <div >879896 kali belajar</div> <div class="courseICollection" data-id="234"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> <ul class="three" style="display: none;"> <li> <a target="_blank" href="http://www.php.cn/ms/course/1648.html" title="[Web front-end] Permulaan pantas Node.js" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662b5d34ba7c0227.png" alt="[Web front-end] Permulaan pantas Node.js"/> </a> <div class="wzrthree-right"> <a target="_blank" title="[Web front-end] Permulaan pantas Node.js" href="http://www.php.cn/ms/course/1648.html">[Web front-end] Permulaan pantas Node.js</a> <div class="wzrthreerb"> <div >6589 kali belajar</div> <div class="courseICollection" data-id="1648"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/1647.html" title="Koleksi lengkap kursus timbunan penuh pembangunan web asing" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6628cc96e310c937.png" alt="Koleksi lengkap kursus timbunan penuh pembangunan web asing"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Koleksi lengkap kursus timbunan penuh pembangunan web asing" href="http://www.php.cn/ms/course/1647.html">Koleksi lengkap kursus timbunan penuh pembangunan web asing</a> <div class="wzrthreerb"> <div >5120 kali belajar</div> <div class="courseICollection" data-id="1647"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/1646.html" title="Gunakan GraphQL praktikal bahasa" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662221173504a436.png" alt="Gunakan GraphQL praktikal bahasa"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Gunakan GraphQL praktikal bahasa" href="http://www.php.cn/ms/course/1646.html">Gunakan GraphQL praktikal bahasa</a> <div class="wzrthreerb"> <div >4290 kali belajar</div> <div class="courseICollection" data-id="1646"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/1645.html" title="Master kipas 550W mempelajari JavaScript dari awal langkah demi langkah" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/662077e163124646.png" alt="Master kipas 550W mempelajari JavaScript dari awal langkah demi langkah"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Master kipas 550W mempelajari JavaScript dari awal langkah demi langkah" href="http://www.php.cn/ms/course/1645.html">Master kipas 550W mempelajari JavaScript dari awal langkah demi langkah</a> <div class="wzrthreerb"> <div >638 kali belajar</div> <div class="courseICollection" data-id="1645"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> <li> <a target="_blank" href="http://www.php.cn/ms/course/1644.html" title="Sarjana Python Mosh, seorang pemula dengan pengetahuan asas sifar boleh bermula dalam masa 6 jam" class="wzrthreelaimg"> <img src="https://img.php.cn/upload/course/000/000/067/6616418ca80b8916.png" alt="Sarjana Python Mosh, seorang pemula dengan pengetahuan asas sifar boleh bermula dalam masa 6 jam"/> </a> <div class="wzrthree-right"> <a target="_blank" title="Sarjana Python Mosh, seorang pemula dengan pengetahuan asas sifar boleh bermula dalam masa 6 jam" href="http://www.php.cn/ms/course/1644.html">Sarjana Python Mosh, seorang pemula dengan pengetahuan asas sifar boleh bermula dalam masa 6 jam</a> <div class="wzrthreerb"> <div >21847 kali belajar</div> <div class="courseICollection" data-id="1644"> <b class="nofollow small-nocollect"></b> </div> </div> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper2', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrthreeTab>div').click(function(e){ $('.wzrthreeTab>div').removeClass('check') $(this).addClass('check') $('.wzrthreelist>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> <div class="wzrFour"> <div class="wzrfour-title"> <div>Muat turun terkini</div> <a href="http://www.php.cn/ms/xiazai">Lagi> </a> </div> <script> $(document).ready(function(){ var sjyx_banSwiper = new Swiper(".sjyx_banSwiperwz",{ speed:1000, autoplay:{ delay:3500, disableOnInteraction: false, }, pagination:{ el:'.sjyx_banSwiperwz .swiper-pagination', clickable :false, }, loop:true }) }) </script> <div class="wzrfourList swiper3"> <div class="wzrfourlTab swiper-wrapper"> <div class="check swiper-slide" data-id="onef">kesan web <div></div></div> <div class="swiper-slide" data-id="twof">Kod sumber laman web<div></div></div> <div class="swiper-slide" data-id="threef">Bahan laman web<div></div></div> <div class="swiper-slide" data-id="fourf">Templat hujung hadapan<div></div></div> </div> <ul class="onef"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="kod hubungan borang mesej perusahaan jQuery" href="http://www.php.cn/ms/toolset/js-special-effects/8071">[butang borang] kod hubungan borang mesej perusahaan jQuery</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="Kesan main balik kotak muzik MP3 HTML5" href="http://www.php.cn/ms/toolset/js-special-effects/8070">[Kesan khas pemain] Kesan main balik kotak muzik MP3 HTML5</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="HTML5 kesan khas menu navigasi animasi zarah sejuk" href="http://www.php.cn/ms/toolset/js-special-effects/8069">[Navigasi menu] HTML5 kesan khas menu navigasi animasi zarah sejuk</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="jQuery bentuk visual seret dan lepas kod penyuntingan" href="http://www.php.cn/ms/toolset/js-special-effects/8068">[butang borang] jQuery bentuk visual seret dan lepas kod penyuntingan</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="Kod pemain muzik Kugou tiruan VUE.JS" href="http://www.php.cn/ms/toolset/js-special-effects/8067">[Kesan khas pemain] Kod pemain muzik Kugou tiruan VUE.JS</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="Permainan kotak menolak html5 klasik" href="http://www.php.cn/ms/toolset/js-special-effects/8066">[kesan khas html5] Permainan kotak menolak html5 klasik</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="menatal jQuery untuk menambah atau mengurangkan kesan imej" href="http://www.php.cn/ms/toolset/js-special-effects/8065">[Gambar kesan khas] menatal jQuery untuk menambah atau mengurangkan kesan imej</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a target="_blank" title="Kesan zum hover kulit album peribadi CSS3" href="http://www.php.cn/ms/toolset/js-special-effects/8064">[Kesan album foto] Kesan zum hover kulit album peribadi CSS3</a> </div> </li> </ul> <ul class="twof" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8328" title="Templat Laman Web Syarikat Pembersihan dan Pembaikan Hiasan Rumah" target="_blank">[Templat bahagian hadapan] Templat Laman Web Syarikat Pembersihan dan Pembaikan Hiasan Rumah</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8327" title="Templat halaman panduan resume peribadi berwarna segar" target="_blank">[Templat bahagian hadapan] Templat halaman panduan resume peribadi berwarna segar</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8326" title="Templat Web Resume Kerja Kreatif Pereka" target="_blank">[Templat bahagian hadapan] Templat Web Resume Kerja Kreatif Pereka</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8325" title="Templat laman web syarikat pembinaan kejuruteraan moden" target="_blank">[Templat bahagian hadapan] Templat laman web syarikat pembinaan kejuruteraan moden</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8324" title="Templat HTML5 responsif untuk institusi perkhidmatan pendidikan" target="_blank">[Templat bahagian hadapan] Templat HTML5 responsif untuk institusi perkhidmatan pendidikan</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8323" title="Templat laman web pusat membeli-belah kedai e-buku dalam talian" target="_blank">[Templat bahagian hadapan] Templat laman web pusat membeli-belah kedai e-buku dalam talian</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8322" title="Teknologi IT menyelesaikan templat tapak web syarikat Internet" target="_blank">[Templat bahagian hadapan] Teknologi IT menyelesaikan templat tapak web syarikat Internet</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8321" title="Templat laman web perkhidmatan perdagangan pertukaran asing gaya ungu" target="_blank">[Templat bahagian hadapan] Templat laman web perkhidmatan perdagangan pertukaran asing gaya ungu</a> </div> </li> </ul> <ul class="threef" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3078" target="_blank" title="Bahan vektor elemen musim panas yang comel (EPS+PNG)">[bahan PNG] Bahan vektor elemen musim panas yang comel (EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3077" target="_blank" title="Empat bahan vektor lencana tamat pengajian 2023 merah (AI+EPS+PNG)">[bahan PNG] Empat bahan vektor lencana tamat pengajian 2023 merah (AI+EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3076" target="_blank" title="Burung nyanyian dan troli diisi dengan bahan vektor sepanduk musim bunga reka bentuk bunga (AI+EPS)">[gambar sepanduk] Burung nyanyian dan troli diisi dengan bahan vektor sepanduk musim bunga reka bentuk bunga (AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3075" target="_blank" title="Bahan vektor topi pengijazahan emas (EPS+PNG)">[bahan PNG] Bahan vektor topi pengijazahan emas (EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3074" target="_blank" title="Bahan vektor ikon gunung gaya hitam putih (EPS+PNG)">[bahan PNG] Bahan vektor ikon gunung gaya hitam putih (EPS+PNG)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3073" target="_blank" title="Bahan vektor siluet superhero (EPS+PNG) dengan jubah warna yang berbeza dan pose yang berbeza">[bahan PNG] Bahan vektor siluet superhero (EPS+PNG) dengan jubah warna yang berbeza dan pose yang berbeza</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3072" target="_blank" title="Bahan vektor sepanduk Hari Arbor gaya rata (AI+EPS)">[gambar sepanduk] Bahan vektor sepanduk Hari Arbor gaya rata (AI+EPS)</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-materials/3071" target="_blank" title="Sembilan bahan vektor buih sembang meletup gaya komik (EPS+PNG)">[bahan PNG] Sembilan bahan vektor buih sembang meletup gaya komik (EPS+PNG)</a> </div> </li> </ul> <ul class="fourf" style="display:none"> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8328" target="_blank" title="Templat Laman Web Syarikat Pembersihan dan Pembaikan Hiasan Rumah">[Templat bahagian hadapan] Templat Laman Web Syarikat Pembersihan dan Pembaikan Hiasan Rumah</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8327" target="_blank" title="Templat halaman panduan resume peribadi berwarna segar">[Templat bahagian hadapan] Templat halaman panduan resume peribadi berwarna segar</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8326" target="_blank" title="Templat Web Resume Kerja Kreatif Pereka">[Templat bahagian hadapan] Templat Web Resume Kerja Kreatif Pereka</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8325" target="_blank" title="Templat laman web syarikat pembinaan kejuruteraan moden">[Templat bahagian hadapan] Templat laman web syarikat pembinaan kejuruteraan moden</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8324" target="_blank" title="Templat HTML5 responsif untuk institusi perkhidmatan pendidikan">[Templat bahagian hadapan] Templat HTML5 responsif untuk institusi perkhidmatan pendidikan</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8323" target="_blank" title="Templat laman web pusat membeli-belah kedai e-buku dalam talian">[Templat bahagian hadapan] Templat laman web pusat membeli-belah kedai e-buku dalam talian</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8322" target="_blank" title="Teknologi IT menyelesaikan templat tapak web syarikat Internet">[Templat bahagian hadapan] Teknologi IT menyelesaikan templat tapak web syarikat Internet</a> </div> </li> <li> <div class="wzrfourli"> <span class="layui-badge-dots wzrflr"></span> <a href="http://www.php.cn/ms/toolset/website-source-code/8321" target="_blank" title="Templat laman web perkhidmatan perdagangan pertukaran asing gaya ungu">[Templat bahagian hadapan] Templat laman web perkhidmatan perdagangan pertukaran asing gaya ungu</a> </div> </li> </ul> </div> <script> var mySwiper = new Swiper('.swiper3', { autoplay: false,//可选选项,自动滑动 slidesPerView : 'auto', }) $('.wzrfourlTab>div').click(function(e){ $('.wzrfourlTab>div').removeClass('check') $(this).addClass('check') $('.wzrfourList>ul').css('display','none') $('.'+e.currentTarget.dataset.id).show() }) </script> </div> </div> </div> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!</p> </div> <div class="footermid"> <a href="http://www.php.cn/ms/about/us.html">Tentang kita</a> <a href="http://www.php.cn/ms/about/disclaimer.html">Penafian</a> <a href="http://www.php.cn/ms/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1731643471"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all'/> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> </body> </html>