DeepSeek写代码这件事,网上有各种声音。

有人说DeepSeek写代码比Claude强,有人说Claude还是大哥。

今天这期,威少不站队,用同一道题,让DeepSeek和Claude同时写,看看到底谁更强。

结果可能会跟你想的不太一样。

测试题目:写一个简单的爬虫
威少选了一道实战中很常见的题:

写一个Python爬虫,爬取一个网页的标题和链接,保存到JSON文件。

这道题不简单也不难,刚好能看出两个AI的思路差异。

先看DeepSeek写的:

import requests
from bs4 import BeautifulSoup
import json

def scrape_website(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'
    }
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()
    
    soup = BeautifulSoup(response.text, 'html.parser')
    results = []
    
    # 找到所有链接
    for link in soup.find_all('a', href=True):
        title = link.get_text(strip=True)
        href = link['href']
        if title and href.startswith('http'):
            results.append({'title': title, 'url': href})
    
    # 保存到JSON
    with open('results.json', 'w', encoding='utf-8') as f:
        json.dump(results, f, ensure_ascii=False, indent=2)
    
    print(f'已保存 {len(results)} 条数据到 results.json')

使用示例

url = ‘https://example.com’
scrape_website(url)
python
再看Claude写的:


import requests
from bs4 import BeautifulSoup
import json

def scrape_website(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36'
    }
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()
    soup = BeautifulSoup(response.text, 'html.parser')
    
    results = []
    for link in soup.find_all('a', href=True):
        title = link.get_text(strip=True)
        href = link['href']
        if title and href.startswith('http'):
            results.append({'title': title, 'url': href})
    
    with open('results.json', 'w', encoding='utf-8') as f:
        json.dump(results, f, ensure_ascii=False, indent=2)
    
    return len(results)

if name == ‘main’:
url = ‘https://example.com’
count = scrape_website(url)
print(f’Saved {count} items’)
python
两份代码都能跑,但有几个细节不一样。

差异一:错误处理谁更严谨
DeepSeek加了 response.raise_for_status(),如果请求失败会直接抛异常。

Claude没有加这个,用 if name == ‘main’: 判断入口,这是一个好习惯。

这一点,两个AI各有优点。

DeepSeek的错误处理意识更强,Claude的入口判断更规范。

如果你想让它写得更好,可以这么说:

写一个Python爬虫,要求:

  1. 必须有错误处理
  2. 要有try/except
  3. 要有if name == 'main’入口判断
    加上约束条件之后,两个AI出来的代码都会更规范。

差异二:注释风格不一样
DeepSeek的注释更详细,每个步骤基本都有说明。

Claude的注释更简洁,只在关键地方加。

这个没有对错,看个人喜好。

威少的经验是,如果你想让它按你的风格写,直接告诉它:

注释风格:用中文,每个函数加一行说明,不解释为什么,只说明做什么
或者:

代码风格:无注释,代码即注释,变量名要自解释
AI都能做到。

差异三:调试错误的能力
这道题是让它写代码,但实际工作中,更常用的是让它帮你找bug。

威少测试了一下,把一段有问题的代码发给两个AI,让它们找错。

def calculate(a, b):
return a + b

result = calculate([1, 2, 3], [4, 5, 6])
print(result)
python
这段代码会输出 [1, 2, 3, 4, 5, 6],不是数字相加,逻辑上有问题。

DeepSeek怎么说?

它会告诉你:函数逻辑本身没问题,列表会拼接,数字相加要改成 a + b,如果想加和要遍历或者用 sum()。

Claude怎么说?

它会直接指出:你想做的是求和,但列表拼接了,应该用 sum(a) + sum(b) 或者遍历相加。

两者都能找到问题,但表达方式不太一样。

DeepSeek更像一个老师,告诉你原理。
Claude更像一个同事,直接告诉你解决方案。

威少的结论
用了一轮下来,威少的感受是这样的:

DeepSeek更适合:学习理解阶段,想知道为什么这么做,需要详细解释

Claude更适合:直接干活阶段,想要最快的解决方案,不需要解释

但这不是绝对的。

威少现在的用法是:先用Claude快速拿到代码,能跑就行。然后把代码发给DeepSeek,让它帮我解释、帮我优化。

两个AI配合着用,比只用一个好。

三个实用技巧
最后给你三个DeepSeek写代码的实用技巧:

第一个,代码写完让它解释。

请解释这段代码的逻辑,用通俗的语言,一句话总结这段代码在做什么。
第二个,让它帮你优化。

请优化这段代码,让它更简洁、更高效、更易读。
第三个,让它写注释版本。

请给这段代码加上注释,注释要清晰但不啰嗦,重点解释为什么这么做,而不是做了什么。
结尾
今天这期,威少用同一道题测试了DeepSeek和Claude,发现了几个有意思的差异:

DeepSeek解释详细,Claude解决直接。
DeepSeek错误处理强,Claude结构更规范。
两者配合用,比只用一个好。

这5个功能,你之前用到了几个?

用到了2个以下的,评论区告诉威少,下期我给你出配套练习题。

我是威少,我们下期见。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐