广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 程序员必知必会的开发者工具有哪些
  • 719
分享到

Python 程序员必知必会的开发者工具有哪些

2023-06-17 07:06:57 719人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python 程序员必知必会的开发者工具有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的

python 程序员必知必会的开发工具有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作。同样的理念也适用于工具开发者的工作,即便他们开发出的工具并没有出现在最终的程序中。本文将介绍Python程序员必知必会的开发者工具。

对于开发者来说,最实用的帮助莫过于帮助他们编写代码文档了。pydoc模块可以根据源代码中的docstrings为任何可导入模块生成格式良好的文档。Python包含了两个测试框架来自动测试代码以及验证代码的正确性:

1)doctest模块,该模块可以从源代码或独立文件的例子中抽取出测试用例。

2)unittest模块,该模块是一个全功能的自动化测试框架,该框架提供了对测试准备(test fixtures), 预定义测试集(predefined test suite)以及测试发现(test discovery)的支持。

trace模 块可以监控Python执行程序的方式,同时生成一个报表来显示程序的每一行执行的次数。这些信息可以用来发现未被自动化测试集所覆盖的程序执行路径,也 可以用来研究程序调用图,进而发现模块之间的依赖关系。编写并执行测试可以发现绝大多数程序中的问题,Python使得debug工作变得更加简单,这是 因为在大部分情况下,Python都能够将未被处理的错误打印到控制台中,我们称这些错误信息为traceback。如果程序不是在文本控制台中运行 的,traceback也能够将错误信息输出到日志文件或是消息对话框中。当标准的traceback无法提供足够的信息时,可以使用cgitb 模块来查看各级栈和源代码上下文中的详细信息,比如局部变量。cgitb模块还能够将这些跟踪信息以html的形式输出,用来报告WEB应用中的错误。

一旦发现了问题出在哪里后,就需要使用到交互式调试器进入到代码中进行调试工作了,pdb模块能够很好地胜任这项工作。该模块可以显示出程序在错误产生时的执行路径,同时可以动态地调整对象和代码进行调试。当程序通过测试并调试后,下一步就是要将注意力放到性能上了。开发者可以使用profile以及timit模块来测试程序的速度,找出程序中到底是哪里很慢,进而对这部分代码独立出来进行调优的工作。Python程序是通过解释器执行的,解释器的输入是原有程序的字节码编译版本。这个字节码编译版本可以在程序执行时动态地生成,也可以在程序打包的时候就生成。compileall模块可以处理程序打包的事宜,它暴露出了打包相关的接口,该接口能够被安装程序和打包工具用来生成包含模块字节码的文件。同时,在开发环境中,compileall模块也可以用来验证源文件是否包含了语法错误。

在源代码级别,pyclbr模块提供了一个类查看器,方便文本编辑器或是其他程序对Python程序中有意思的字符进行扫描,比如函数或者是类。在提供了类查看器以后,就无需引入代码,这样就避免了潜在的副作用影响。

文档字符串与doctest模块

如果函数,类或者是模块的***行是一个字符串,那么这个字符串就是一个文档字符串。可以认为包含文档字符串是一个良好的编程习惯,这是因为这些字符串可以给Python程序开发工具提供一些信息。比如,help()命令能够检测文档字符串,Python相关的IDE也能够进行检测文档字符串的工作。由于程序员倾向于在交互式shell中查看文档字符串,所以***将这些字符串写的简短一些。例如

# mult.py class Test:     """     >>> a=Test(5)     >>> a.multiply_by_2()     10     """     def __init__(self, number):         self._number=number      def multiply_by_2(self):         return self._number*2

在编写文档时,一个常见的问题就是如何保持文档和实际代码的同步。例如,程序员也许会修改函数的实现,但是却忘记了更新文档。针对这个问题,我们可以使用 doctest模块。doctest模块收集文档字符串,并对它们进行扫描,然后将它们作为测试进行执行。为了使用doctest模块,我们通常会新建一 个用于测试的独立的模块。例如,如果前面的例子Test class包含在文件mult.py中,那么,你应该新建一个testmult.py文件用来测试,如下所示:

# testmult.py  import mult, doctest  doctest.testmod(mult, verbose=True)  # Trying: #     a=Test(5) # Expecting nothing # ok # Trying: #     a.multiply_by_2() # Expecting: #     10 # ok # 3 items had no tests: #     mult #     mult.Test.__init__ #     mult.Test.multiply_by_2 # 1 items passed all tests: #    2 tests in mult.Test # 2 tests in 4 items. # 2 passed and 0 failed. # Test passed.

在这段代码中,doctest.testmod(module)会执行特定模块的测试,并且返回测试失败的个数以及测试的总数目。如果所有的测试都通过了,那么不会产生任何输出。否则的话,你将会看到一个失败报告,用来显示期望值和实际值之间的差别。如果你想看到测试的详细输出,你可以使用testmod(module, verbose=True).

如果不想新建一个单独的测试文件的话,那么另一种选择就是在文件末尾包含相应的测试代码:

if __name__ == '__main__':     import doctest     doctest.testmod()

如果想执行这类测试的话,我们可以通过-m选项调用doctest模块。通常来讲,当执行测试的时候没有任何的输出。如果想查看详细信息的话,可以加上-v选项。

$ python -m doctest -v mult.py

单元测试与unittest模块

如果想更加彻底地 对程序进行测试,我们可以使用unittest模块。通过单元测试,开发者可以为构成程序的每一个元素(例如,独立的函数,方法,类以及模块)编写一系列 独立的测试用例。当测试更大的程序时,这些测试就可以作为基石来验证程序的正确性。当我们的程序变得越来越大的时候,对不同构件的单元测试就可以组合起来 成为更大的测试框架以及测试工具。这能够极大地简化软件测试的工作,为找到并解决软件问题提供了便利。

# splitter.py import unittest  def split(line, types=None, delimiter=None):     """Splits a line of text and optionally perfORMs type conversion.     ...     """     fields = line.split(delimiter)     if types:         fields = [ ty(val) for ty,val in zip(types,fields) ]     return fields  class TestSplitFunction(unittest.TestCase):     def setUp(self):         # Perform set up actions (if any)         pass     def tearDown(self):         # Perform clean-up actions (if any)         pass     def testsimplestring(self):         r = split('GoOG 100 490.50')         self.assertEqual(r,['GOOG','100','490.50'])     def testtypeconvert(self):         r = split('GOOG 100 490.50',[str, int, float])         self.assertEqual(r,['GOOG', 100, 490.5])     def testdelimiter(self):         r = split('GOOG,100,490.50',delimiter=',')         self.assertEqual(r,['GOOG','100','490.50'])  # Run the unittests if __name__ == '__main__':     unittest.main()  #... #---------------------------------------------------------------------- #Ran 3 tests in 0.001s  #OK

在使用单元测试时,我们需要定义一个继承自unittest.TestCase的类。在这个类里面,每一个测试都以方法的形式进行定义,并都以test打头进行命名——例如,’testsimplestring‘,’testtypeconvert‘以及类似的命名方式(有必要强调一下,只要方法名以test打头,那么无论怎么命名都是可以的)。在每个测试中,断言可以用来对不同的条件进行检查。

实际的例子:

假如你在程序里有一个方法,这个方法的输出指向标准输出(sys.stdout)。这通常意味着是往屏幕上输出文本信息。如果你想对你的代码进行测试来证明这一点,只要给出相应的输入,那么对应的输出就会被显示出来。

# url.py  def urlprint(protocol, host, domain):     url = '{}://{}.{}'.format(protocol, host, domain)     print(url)

内置的print函数在默认情况下会往sys.stdout发送输出。为了测试输出已经实际到达,你可以使用一个替身对象对其进行模拟,并且对程序的期望值进行断言。unittest.mock模块中的patch()方法可以只在运行测试的上下文中才替换对象,在测试完成后就立刻返回对象原始的状态。下面是urlprint()方法的测试代码:

#urltest.py  from io import StringIO from unittest import TestCase from unittest.mock import patch import url  class TestURLPrint(TestCase):     def test_url_gets_to_stdout(self):         protocol = 'Http'         host = 'www'         domain = 'example.com'         expected_url = '{}://{}.{}\n'.format(protocol, host, domain)          with patch('sys.stdout', new=StringIO()) as fake_out:             url.urlprint(protocol, host, domain)             self.assertEqual(fake_out.getvalue(), expected_url)

urlprint()函数有三个参数,测试代码首先给每个参数赋了一个假值。变量expected_url包含了期望的输出字符串。为了能够执行测试,我们使用了unittest.mock.patch()方法作为上下文管理器,把标准输出sys.stdout替换为了StringIO对象,这样发送的标准输出的内容就会被StringIO对象所接收。变量fake_out就是在这一过程中所创建出的模拟对象,该对象能够在with所处的代码块中所使用,来进行一系列的测试检查。当with语 句完成时,patch方法能够将所有的东西都复原到测试执行之前的状态,就好像测试没有执行一样,而这无需任何额外的工作。但对于某些Python的C扩 展来讲,这个例子却显得毫无意义,这是因为这些C扩展程序绕过了sys.stdout的设置,直接将输出发送到了标准输出上。这个例子仅适用于纯 Python代码的程序(如果你想捕获到类似C扩展的输入输出,那么你可以通过打开一个临时文件然后将标准输出重定向到该文件的技巧来进行实现)。

Python调试器与pdb模块

Python在 pdb模块中包含了一个简单的基于命令行的调试器。pdb模块支持事后调试(post-mortem  debugging),栈帧探查(inspection of stack  frames),断点(breakpoints),单步调试(single-stepping of source lines)以及代码审查(code  evaluation)。

好几个函数都能够在程序中调用调试器,或是在交互式的Python终端中进行调试工作。

在所有启动调试器的函数中,函数set_trace()也许是最简易实用的了。如果在复杂程序中发现了问题,可以在代码中插入set_trace()函数,并运行程序。当执行到set_trace()函数时,这就会暂停程序的执行并直接跳转到调试器中,这时候你就可以大展手脚开始检查运行时环境了。当退出调试器时,调试器会自动恢复程序的执行。

假设你的程序有问题,你想找到一个简单的方法来对它进行调试。

如果你的程序崩溃时报了一个异常错误,那么你可以用python3 -i someprogram.py这个命令来运行你的程序,这能够很好地发现问题所在。-i选项表明只要程序终结就立即启动一个交互式shell。在这个交互式shell中,你就可以很好地探查到底发生了什么导致程序的错误。例如,如果你有以下代码:

def function(n):     return n + 10  function("Hello")

如果使用python3 -i 命令运行程序就会产生如下输出:

python3 -i sample.py Traceback (most recent call last):   File "sample.py", line 4, in <module>     function("Hello")   File "sample.py", line 2, in function     return n + 10 TypeError: Can&#039;t convert &#039;int&#039; object to str implicitly >>> function(20) 30 >>>

如果你没有发现什么明显的错误,那么你可以进一步地启动Python调试器。例如:

>>> import pdb >>> pdb.pm() > sample.py(4)func() -> return n + 10 (Pdb) w sample.py(6)<module>() -> func(&#039;Hello&#039;) > sample.py(4)func() -> return n + 10 (Pdb) print n &#039;Hello&#039; (Pdb) q >>>

如果你的代码身处的环境很难启动一个交互式shell的话(比如在服务器环境下),你可以增加错误处理的代码,并自己输出跟踪信息。例如:

import traceback import sys try:     func(arg) except:     print(&#039;**** AN ERROR OCCURRED ****&#039;)     traceback.print_exc(file=sys.stderr)

如果你的程序并没有崩溃,而是说程序的行为与你的预期表现的不一致,那么你可以尝试在一些可能出错的地方加入print()函数。如果你打算采用这种方案 的话,那么还有些相关的技巧值得探究。首先,函数traceback.print_stack()能够在被执行时立即打印出程序中栈的跟踪信息。例如:

>>> def sample(n): ...     if n > 0: ...         sample(n-1) ...     else: ...         traceback.print_stack(file=sys.stderr) ... >>> sample(5) File "<stdin>", line 1, in <module> File "<stdin>", line 3, in sample File "<stdin>", line 3, in sample File "<stdin>", line 3, in sample File "<stdin>", line 3, in sample File "<stdin>", line 3, in sample File "<stdin>", line 5, in sample >>>

另外,你可以在程序中任意一处使用pdb.set_trace()手动地启动调试器,就像这样:

import pdb def func(arg):     ...     pdb.set_trace()     ...

深入解析大型程序的时候,这是一个非常实用的技巧,这样操作能够清楚地了解程序的控制流或是函数的参数。比如,一旦调试器启动了之后,你就可以使用print或者w命令来查看变量,来了解栈的跟踪信息。

在进行软件调试时,千万不要让事情变得很复杂。有时候仅仅需要知道程序的跟踪信息就能够解决大部分的简单错误(比如,实际的错误总是显示在跟踪信息的***一行)。在实际的开发过程中,将print()函数插入到代码中也能够很方便地显示调试信息(只需要记得在调试完以后将print语句删除掉就行了)。调试器的通用用法是在崩溃的函数中探查变量的值,知道如何在程序崩溃以后再进入到调试器中就显得非常实用。在程序的控制流不是那么清楚的情况下,你可以插入pdb.set_trace()语句来理清复杂程序的思路。本质上,程序会一直执行直到遇到set_trace()调用,之后程序就会立刻跳转进入到调试器中。在调试器里,你就可以进行更多的尝试。如果你正在使用Python的IDE,那么IDE通常会提供基于pdb的调试接口,你可以查阅IDE的相关文档来获取更多的信息。

下面是一些Python调试器入门的资源列表:

  1. 阅读Steve Ferb的文章 &#8220;Debugging in Python&#8221;

  2. 观看Eric Holscher的截图 &#8220;Using pdb, the Python Debugger&#8221;

  3. 阅读Ayman Hourieh的文章 &#8220;Python Debugging Techniques&#8221;

  4. 阅读 Python documentation for pdb &#8211; The Python Debugger

  5. 阅读Karen Tracey的D jango 1.1 Testing and Debugging一书中的第九章&mdash;&mdash;When You Don&#8217;t Even Know What to Log: Using Debuggers

程序分析

profile模块和cProfile模块可以用来分析程序。它们的工作原理都一样,唯一的区别是,cProfile模块 是以C扩展的方式实现的,如此一来运行的速度也快了很多,也显得比较流行。这两个模块都可以用来收集覆盖信息(比如,有多少函数被执行了),也能够收集性 能数据。对一个程序进行分析的最简单的方法就是运行这个命令:

% python -m cProfile someprogram.py

此外,也可以使用profile模块中的run函数:

run(command [, filename])

该函数会使用exec语句执行command中的内容。filename是可选的文件保存名,如果没有filename的话,该命令的输出会直接发送到标准输出上。

下面是分析器执行完成时的输出报告:

126 function calls (6 primitive calls) in 5.130 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.030 0.030 5.070 5.070 <string>:1(?) 121/1 5.020 0.041 5.020 5.020 book.py:11(process) 1 0.020 0.020 5.040 5.040 book.py:5(?) 2 0.000 0.000 0.000 0.000 exceptions.py:101(_ _init_ _) 1 0.060 0.060 5.130 5.130 profile:0(execfile(&#039;book.py&#039;)) 0 0.000 0.000 profile:0(profiler)

当输出中的***列包含了两个数字时(比如,121/1),后者是元调用(primitive  call)的次数,前者是实际调用的次数(译者注:只有在递归情况下,实际调用的次数才会大于元调用的次数,其他情况下两者都相等)。对于绝大部分的应用 程序来讲使用该模块所产生的的分析报告就已经足够了,比如,你只是想简单地看一下你的程序花费了多少时间。然后,如果你还想将这些数据保存下来,并在将来 对其进行分析,你可以使用pstats模块。

假设你想知道你的程序究竟在哪里花费了多少时间。

如果你只是想简单地给你的整个程序计时的话,使用Unix中的time命令就已经完全能够应付了。例如:

bash % time python3 someprogram.py real 0m13.937s user 0m12.162s sys 0m0.098s bash %

通常来讲,分析代码的程度会介于这两个极端之间。比如,你可能已经知道你的代码会在一些特定的函数中花的时间特别多。针对这类特定函数的分析,我们可以使用修饰器decorator,例如:

import time from functools import wraps  def timethis(func):     @wraps(func)     def wrapper(*args, **kwargs):         start = time.perf_counter()         r = func(*args, **kwargs)         end = time.perf_counter()         print(&#039;{}.{} : {}&#039;.format(func.__module__, func.__name__, end - start))         return r     return wrapper

使用decorator的方式很简单,你只需要把它放在你想要分析的函数的定义前面就可以了。例如:

>>> @timethis ... def countdown(n): ...     while n > 0: ...         n -= 1 ... >>> countdown(10000000) __main__.countdown : 0.803001880645752 >>>

如果想要分析一个语句块的话,你可以定义一个上下文管理器(context manager)。例如:

import time from contextlib import contextmanager  @contextmanager def timeblock(label):     start = time.perf_counter()     try:         yield     finally:         end = time.perf_counter()         print(&#039;{} : {}&#039;.format(label, end - start))

接下来是如何使用上下文管理器的例子:

>>> with timeblock(&#039;counting&#039;): ...     n = 10000000 ...     while n > 0: ...         n -= 1 ... counting : 1.5551159381866455 >>>

关于Python 程序员必知必会的开发者工具有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。

--结束END--

本文标题: Python 程序员必知必会的开发者工具有哪些

本文链接: https://www.lsjlt.com/news/287877.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 程序员必知必会的开发者工具有哪些
    Python 程序员必知必会的开发者工具有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的...
    99+
    2023-06-17
  • 程序员必知必会的排序算法有哪些
    这篇文章主要介绍“程序员必知必会的排序算法有哪些”,在日常操作中,相信很多人在程序员必知必会的排序算法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”程序员必知必会的排序...
    99+
    2022-10-19
  • Web开发者必备工具有哪些
    这篇文章主要为大家展示了“Web开发者必备工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Web开发者必备工具有哪些”这篇文章吧。HTML Cheat ...
    99+
    2022-10-19
  • Go语言开发者必知必会的Linux命令有哪些?
    Go语言是一门越来越流行的编程语言,它的强大功能和易于学习的特点,吸引了越来越多的开发者。而在开发过程中,熟练掌握Linux命令,可以帮助我们更加高效地完成工作。本文将介绍Go语言开发者必知必会的Linux命令。 cd命令 cd命令是L...
    99+
    2023-11-01
    linux git spring
  • Java开发者必会的大数据工具和框架有哪些
    这篇文章主要介绍了Java开发者必会的大数据工具和框架有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java开发者必会的大数据工具和框架有哪些文章都会有所收获,下面我们一起来看看吧。MongoDB——最受...
    99+
    2023-06-05
  • ASP 接口开发者必备的IDE和Shell工具有哪些?
    在ASP接口开发过程中,选择合适的开发工具可以大幅提高开发效率。本文将介绍ASP接口开发者必备的IDE和Shell工具,为读者提供参考和借鉴。 一、IDE工具 Visual Studio Visual Studio是一款由微软开发的集...
    99+
    2023-10-11
    接口 ide shell
  • 入门web前端开发必须知道的开发工具有哪些
    这篇文章主要介绍“入门web前端开发必须知道的开发工具有哪些”,在日常操作中,相信很多人在入门web前端开发必须知道的开发工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • 前端开发者必备的Nginx知识有哪些
    这篇文章主要讲解了“前端开发者必备的Nginx知识有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端开发者必备的Nginx知识有哪些”吧!nginx在...
    99+
    2022-10-19
  • 作为程序员必会的Linux命令有哪些
    这篇文章给大家分享的是有关作为程序员必会的Linux命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.查找文件命令:find / -name name.txt 根据名称查找/目录下的name.txt文件...
    99+
    2023-06-16
  • Python编程必备的工具有哪些
    这篇文章主要讲解了“Python编程必备的工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python编程必备的工具有哪些”吧!  1、lpython:是一个基于Python She...
    99+
    2023-06-01
  • 2021年必备的html5开发工具有哪些
    本文小编为大家详细介绍“2021年必备的html5开发工具有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“2021年必备的html5开发工具有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  1、Sub...
    99+
    2023-06-27
  • Web前端开发者必知的CSS属性有哪些
    这篇文章将为大家详细讲解有关Web前端开发者必知的CSS属性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 圆角效果 如今的Web设计在不断跟进最新的开发技术,纷纷采用HTML5来开发多样性的W...
    99+
    2023-06-08
  • 程序员必知的Python陷阱与缺陷列表有哪些
    程序员必知的Python陷阱与缺陷列表有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式。如果一段...
    99+
    2023-06-17
  • Python 开发者必备的 git 技能有哪些?
    随着 Python 开发的日益流行,越来越多的开发者需要学习 git 技能来进行代码管理和版本控制。Git 是一款免费、开源、分布式版本控制系统,广泛应用于软件开发中。在这篇文章中,我们将会介绍 Python 开发者必备的 git 技能。...
    99+
    2023-09-18
    面试 编程算法 git
  • Python 开发者必备的文件处理工具:你使用过哪些?
    在 Python 开发过程中,文件处理是一个非常重要的环节。无论是读取文件、写入文件、复制文件还是删除文件,都需要使用一些工具来处理。本篇文章将为大家介绍一些 Python 开发者必备的文件处理工具,希望能够帮助大家更加轻松地进行文件处理...
    99+
    2023-07-30
    数组 文件 ide
  • Laravel开发人员必须拥有和使用的免费工具有哪些
    本篇内容主要讲解“Laravel开发人员必须拥有和使用的免费工具有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel开发人员必须拥有和使用的免费工具有哪些”吧!Laravel Va...
    99+
    2023-07-04
  • 优秀Web开发者提升开发能力必知的事有哪些
    这篇文章主要介绍了优秀Web开发者提升开发能力必知的事有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  1. 不要只盯着代码  如今人人都会写代码。很多业余爱好者也可以...
    99+
    2023-06-08
  • Python 程序员必备的算法技能有哪些?
    作为一名 Python 程序员,掌握算法技能是非常重要的。因为在实际工作中,我们经常需要处理大量的数据,而算法能够帮助我们更高效地处理这些数据。所以本篇文章将介绍一些 Python 程序员必备的算法技能。 一、排序算法 排序是最基本的算法...
    99+
    2023-09-16
    编程算法 分布式 linux
  • web开发人员必须知道的网络基础知识有哪些
    这篇文章主要介绍“web开发人员必须知道的网络基础知识有哪些”,在日常操作中,相信很多人在web开发人员必须知道的网络基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • Web前端程序员必须会用的CSS技巧有哪些
    小编给大家分享一下Web前端程序员必须会用的CSS技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、元素的margin...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作