<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>悠游AI</title><link href="https://www.youy-x.top/" rel="alternate"/><link href="https://www.youy-x.top/feeds/all.atom.xml" rel="self"/><id>https://www.youy-x.top/</id><updated>2026-06-30T00:00:00+08:00</updated><entry><title>截面动量 vs 时序动量</title><link href="https://www.youy-x.top/jie-mian-dong-liang-vs-shi-xu-dong-liang.html" rel="alternate"/><published>2026-06-30T00:00:00+08:00</published><updated>2026-06-30T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-30:/jie-mian-dong-liang-vs-shi-xu-dong-liang.html</id><summary type="html">&lt;p&gt;理解截面动量（CSM）和时序动量（TSM）的核心区别、适用场景和实现方式&lt;/p&gt;</summary><content type="html">&lt;h1&gt;截面动量 vs 时序动量——策略选择的关键区别&lt;/h1&gt;
&lt;p&gt;Lesson 0004策略进阶~20 min&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本课目标：&lt;/strong&gt;理解截面动量（CSM）和时序动量（TSM）的核心区别、适用场景和实现方式。&lt;/p&gt;
&lt;h2&gt;截面动量（CSM）&lt;/h2&gt;
&lt;p&gt;在横截面上比较所有资产，做多相对强势的，做空（或避开）相对弱势的。&lt;/p&gt;
&lt;p&gt;CSM: signal_i = rank(ret_i) - mean(rank(ret))&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;csm_signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;截面动量：在股票之间排序&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rank&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;时序动量（TSM）&lt;/h2&gt;
&lt;p&gt;每只资产独立看：如果自己过去涨了，就买入；跌了就卖出/空仓。&lt;/p&gt;
&lt;p&gt;TSM: signal_i = sign(ret_i - 0) 或使用连续值&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tsm_signal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;时序动量：只看资产自身&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# 标准化信号强度&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;关键区别&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;维度&lt;/th&gt;
&lt;th style="text-align: left;"&gt;截面动量&lt;/th&gt;
&lt;th style="text-align: left;"&gt;时序动量&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;信号来源&lt;/td&gt;
&lt;td style="text-align: left;"&gt;相对强弱&lt;/td&gt;
&lt;td style="text-align: left;"&gt;绝对涨跌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;多空&lt;/td&gt;
&lt;td style="text-align: left;"&gt;多+空&lt;/td&gt;
&lt;td style="text-align: left;"&gt;仅多头（或空仓）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;适用市场&lt;/td&gt;
&lt;td style="text-align: left;"&gt;股票（多资产）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;期货、ETF、指数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;牛市表现&lt;/td&gt;
&lt;td style="text-align: left;"&gt;好&lt;/td&gt;
&lt;td style="text-align: left;"&gt;好&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;熊市表现&lt;/td&gt;
&lt;td style="text-align: left;"&gt;差（强制做多最差的）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;好（可空仓）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;容量&lt;/td&gt;
&lt;td style="text-align: left;"&gt;大&lt;/td&gt;
&lt;td style="text-align: left;"&gt;中&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;实际应用建议&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A股多头策略&lt;/strong&gt;：CSM更适合，选top-k做多&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;期货CTA&lt;/strong&gt;：TSM更适合，单品种趋势跟踪&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ETF轮动&lt;/strong&gt;：两者结合效果更好&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;熊市中，哪种动量策略表现更好？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;截面动量&lt;/li&gt;
&lt;li&gt;时序动量（可空仓）&lt;/li&gt;
&lt;li&gt;两者一样&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显示答案&lt;/p&gt;
&lt;h2&gt;📚 延伸资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2292849"&gt;Moskowitz (2012) TSM 原文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://scipy.org/"&gt;SciPy 统计库（rank 相关计算）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quantconnect.com/docs/key-concepts/time-series-vs-cross-section"&gt;QuantConnect: CSM vs TSM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Momentum_(finance)"&gt;Wikipedia: Momentum (Finance)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提示：&lt;/strong&gt;有任何不清楚的地方，随时问我。&lt;/p&gt;
&lt;hr&gt;</content><category term="量化"/><category term="python"/><category term="量化"/></entry><entry><title>第一个回测</title><link href="https://www.youy-x.top/di-yi-ge-hui-ce.html" rel="alternate"/><published>2026-06-29T00:00:00+08:00</published><updated>2026-06-29T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-29:/di-yi-ge-hui-ce.html</id><summary type="html">&lt;p&gt;用 Python 实现第一个动量策略回测——买入过去 N 日涨幅最大的股票，持有 M 日。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;第一个回测——实现最简单的动量策略&lt;/h1&gt;
&lt;p&gt;Lesson 0003回测基础~20 min&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本课目标：&lt;/strong&gt;用 Python 实现第一个动量策略回测——买入过去 N 日涨幅最大的股票，持有 M 日。&lt;/p&gt;
&lt;h2&gt;策略逻辑&lt;/h2&gt;
&lt;p&gt;最简单的截面动量策略：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每 N 个交易日，计算每只股票过去 N 日的收益率&lt;/li&gt;
&lt;li&gt;选收益率最高的 K 只股票买入（等权）&lt;/li&gt;
&lt;li&gt;持有 M 个交易日&lt;/li&gt;
&lt;li&gt;重复&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;实现代码&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;numpy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;np&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pandas&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pd&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;simple_momentum_backtest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lookback&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;topk&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;    price_df: DataFrame, 每列是一只股票的收盘价&lt;/span&gt;
&lt;span class="sd"&gt;    lookback: 回顾期（计算过去 N 日收益）&lt;/span&gt;
&lt;span class="sd"&gt;    hold: 持有期&lt;/span&gt;
&lt;span class="sd"&gt;    topk: 选几只股票&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;returns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pct_change&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lookback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# N 日收益&lt;/span&gt;
    &lt;span class="n"&gt;positions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lookback&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;hold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hold&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="kp"&gt;rank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;returns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kp"&gt;rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ascending&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;selected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;rank&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;topk&lt;/span&gt;  &lt;span class="c1"&gt;# 选 top-k&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hold&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;positions&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;positions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;selected&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kp"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# 计算策略收益&lt;/span&gt;
    &lt;span class="n"&gt;daily_ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pct_change&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;strategy_ret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;positions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;daily_ret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kp"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;topk&lt;/span&gt;
    &lt;span class="n"&gt;nav&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;strategy_ret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="kp"&gt;cumprod&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;nav&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;运行回测&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;simple_momentum_backtest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;price_df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;lookback&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;hold&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;topk&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;计算关键指标&lt;/span&gt;
&lt;span class="nx"&gt;total_ret&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nx"&gt;annual_ret&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nx"&gt;sharpe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;strategy_ret&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;strategy_ret&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;std&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;252&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;max_dd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;nav&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cummax&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nx"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;总收益率: {total_ret:.2%}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;年化收益率: {annual_ret:.2%}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;夏普比率: {sharpe:.2f}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;f&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;最大回撤: {max_dd:.2%}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;可视化&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;matplotlib.pyplot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;plt&lt;/span&gt;

&lt;span class="n"&gt;nav&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;动量策略净值曲线&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ylabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;净值&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;简单动量策略的核心步骤是什么？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;随机选股买入持有&lt;/li&gt;
&lt;li&gt;回顾期→选top-k→持有期→重复&lt;/li&gt;
&lt;li&gt;每天买卖所有股票&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显示答案&lt;/p&gt;
&lt;h2&gt;📚 延伸资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pandas.pydata.org/docs/user_guide/computation.html"&gt;pandas 基础计算与滚动窗口&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://matplotlib.org/stable/tutorials/introductory/pyplot.html"&gt;matplotlib pyplot 教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/terms/s/sharperatio.asp"&gt;Investopedia: 夏普比率详解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/terms/m/maximum-drawdown-mdd.asp"&gt;Investopedia: 最大回撤详解&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提示：&lt;/strong&gt;有任何不清楚的地方，随时问我。&lt;/p&gt;</content><category term="量化"/><category term="python"/><category term="量化"/></entry><entry><title>理解动量策略</title><link href="https://www.youy-x.top/li-jie-dong-liang-ce-lue.html" rel="alternate"/><published>2026-06-29T00:00:00+08:00</published><updated>2026-06-29T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-29:/li-jie-dong-liang-ce-lue.html</id><summary type="html">&lt;p&gt;理解动量效应的核心概念、学术起源，以及为什么它能在不同市场持续赚钱。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;动量策略入门——什么是动量效应？为什么有效？&lt;/h1&gt;
&lt;p&gt;Lesson 0001基础概念~15 min&lt;/p&gt;
&lt;p&gt;&lt;a href="../index.html"&gt;📋 课程目录&lt;/a&gt;&lt;a href="0002-data-acquisition.html"&gt;数据获取与处理——用Python拉取A股行情数据 →&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本课目标：&lt;/strong&gt;理解动量效应的核心概念、学术起源，以及为什么它能在不同市场持续赚钱。&lt;/p&gt;
&lt;h2&gt;什么是动量效应？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;动量效应&lt;/strong&gt;（Momentum Effect）是指：过去表现好的资产，未来一段时间继续表现好；过去表现差的资产，未来继续表现差。简单说就是"强者恒强，弱者恒弱"。&lt;/p&gt;
&lt;p&gt;动量策略 = 买入过去赢家 + 卖出过去输家&lt;/p&gt;
&lt;h2&gt;经典论文&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jegadeesh &amp;amp; Titman (1993)&lt;/strong&gt;：首次系统验证美国股市动量效应，买入过去6个月赢家、卖出输家，持有6个月，月均超额收益约1%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moskowitz, Ooi &amp;amp; Pedersen (2012)&lt;/strong&gt;：时间序列动量（TSM），发现单资产自身过去收益能预测未来收益&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;动量有效性的主流解释&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;理论&lt;/th&gt;
&lt;th style="text-align: left;"&gt;核心观点&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;行为金融&lt;/td&gt;
&lt;td style="text-align: left;"&gt;投资者反应不足（underreaction）和反应过度（overreaction）导致趋势延续&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;信息扩散&lt;/td&gt;
&lt;td style="text-align: left;"&gt;新信息逐步传播，价格需要时间充分反映&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;风险补偿&lt;/td&gt;
&lt;td style="text-align: left;"&gt;动量策略承担了"趋势逆转"的风险，超额收益是对风险的补偿&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;A股市场也有效吗？&lt;/h2&gt;
&lt;p&gt;是的，A股同样存在显著的动量效应，但有中国特色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短期反转效应更强（1-3个月），中期动量效应明显（6-12个月）&lt;/li&gt;
&lt;li&gt;散户主导的市场导致趋势形成后惯性更强&lt;/li&gt;
&lt;li&gt;需要特别注意涨跌停板制度和停牌&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;本课小结&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;动量效应是金融学中最稳健的异象之一&lt;/li&gt;
&lt;li&gt;行为金融学提供了最令人信服的解释&lt;/li&gt;
&lt;li&gt;A股市场同样适用，但需要调整参数&lt;/li&gt;
&lt;li&gt;接下来的课程中，我们将用Python实现并回测动量策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;动量效应指的是什么现象？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;过去涨的未来跌&lt;/li&gt;
&lt;li&gt;过去涨的未来继续涨&lt;/li&gt;
&lt;li&gt;价格随机游走&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显示答案&lt;/p&gt;
&lt;h2&gt;📚 延伸资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2095317"&gt;Jegadeesh &amp;amp; Titman (1993) 动量效应经典论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2292849"&gt;Moskowitz et al. (2012) 时序动量论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/terms/m/momentum.asp"&gt;Investopedia: Momentum Investing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.joinquant.com/help/api/help#name:terms"&gt;聚宽: 动量因子概念&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提示：&lt;/strong&gt;有任何不清楚的地方，随时问我。&lt;/p&gt;</content><category term="量化"/><category term="python"/><category term="量化"/></entry><entry><title>数据获取与处理</title><link href="https://www.youy-x.top/shu-ju-huo-qu-yu-chu-li.html" rel="alternate"/><published>2026-06-29T00:00:00+08:00</published><updated>2026-06-29T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-29:/shu-ju-huo-qu-yu-chu-li.html</id><summary type="html">&lt;p&gt;学会使用 AKShare 库获取 A 股历史行情数据，并做基础的数据清洗和预处理。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;数据获取与处理——用Python拉取A股行情数据&lt;/h1&gt;
&lt;p&gt;Lesson 0002基础数据~20 min&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本课目标：&lt;/strong&gt;学会使用 AKShare 库获取 A 股历史行情数据，并做基础的数据清洗和预处理。&lt;/p&gt;
&lt;h2&gt;安装 AKShare&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip install akshare
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;AKShare 是一个免费、开源的 Python 财经数据接口库，覆盖 A 股、期货、基金、债券等。&lt;/p&gt;
&lt;h2&gt;获取单只股票的历史数据&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;akshare&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;ak&lt;/span&gt;

&lt;span class="c1"&gt;# 获取贵州茅台日线数据（前复权）&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ak&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stock_zh_a_hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;600519&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;daily&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;start_date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;20100101&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;end_date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;20241231&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;adjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;qfq&amp;quot;&lt;/span&gt;  &lt;span class="c1"&gt;# 前复权&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;数据清洗要点&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;#&lt;/span&gt; 1. 日期列转为 datetime 并设为索引
df[&amp;#39;日期&amp;#39;] = pd.to_datetime(df[&amp;#39;日期&amp;#39;])
df = df.set_index(&amp;#39;日期&amp;#39;)

&lt;span class="gh"&gt;#&lt;/span&gt; 2. 排序（AKShare 默认降序，需要变为升序）
df = df.sort_index()

&lt;span class="gh"&gt;#&lt;/span&gt; 3. 检查缺失值
print(df.isnull().sum())

&lt;span class="gh"&gt;#&lt;/span&gt; 4. 统一列名（英文方便后续处理）
df.columns = [&amp;#39;开盘&amp;#39;, &amp;#39;收盘&amp;#39;, &amp;#39;最高&amp;#39;, &amp;#39;最低&amp;#39;, &amp;#39;成交量&amp;#39;, &amp;#39;成交额&amp;#39;,
              &amp;#39;振幅&amp;#39;, &amp;#39;涨跌幅&amp;#39;, &amp;#39;涨跌额&amp;#39;, &amp;#39;换手率&amp;#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;批量获取多只股票&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pandas&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pd&lt;/span&gt;

&lt;span class="n"&gt;stock_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;600519&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;000858&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;000568&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;600809&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;000596&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stock_list&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ak&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stock_zh_a_hist&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;adjust&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;qfq&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;日期&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_datetime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;symbol&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;收盘&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# 合并为一个 DataFrame&lt;/span&gt;
&lt;span class="n"&gt;price_df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;price_df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sort_index&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price_df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;AKShare 有频率限制，不要短时间内大量请求。建议单次请求间隔 0.5-1 秒。&lt;/p&gt;
&lt;h2&gt;保存数据&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;#&lt;/span&gt; 保存为 CSV
price_df.to_csv(&amp;#39;stock_prices.csv&amp;#39;)

&lt;span class="gh"&gt;#&lt;/span&gt; 下次读取
price_df = pd.read_csv(&amp;#39;stock_prices.csv&amp;#39;, index_col=0, parse_dates=True)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;AKShare 中获取前复权数据的参数是？&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;adjust='qfq'&lt;/li&gt;
&lt;li&gt;adjust='hfq'&lt;/li&gt;
&lt;li&gt;adjust='none'&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显示答案&lt;/p&gt;
&lt;h2&gt;📚 延伸资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://akshare.akfamily.xyz/"&gt;AKShare 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html"&gt;pandas read_csv 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tushare.pro/"&gt;Tushare 数据接口（备选数据源）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.joinquant.com/help/api/help#name:api"&gt;聚宽数据API文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;提示：&lt;/strong&gt;有任何不清楚的地方，随时问我。&lt;/p&gt;</content><category term="量化"/><category term="python"/><category term="量化"/></entry><entry><title>模型接入与配置实战</title><link href="https://www.youy-x.top/mo-xing-jie-ru-yu-pei-zhi-shi-zhan.html" rel="alternate"/><published>2026-06-28T00:00:00+08:00</published><updated>2026-06-28T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-28:/mo-xing-jie-ru-yu-pei-zhi-shi-zhan.html</id><summary type="html">&lt;p&gt;在 Dify 控制台里完成至少 2 个模型的接入配置，并理解不同模型类型（系统推理 / 对话 / Embedding）的区别与用途&lt;/p&gt;</summary><content type="html">&lt;p&gt;第三课&lt;/p&gt;
&lt;h1&gt;模型接入与配置实战&lt;/h1&gt;
&lt;p&gt;让 Dify 真正"有脑可动"——手把手配置大模型&lt;/p&gt;
&lt;p&gt;⏱ 预计时间：10-15 分钟&lt;/p&gt;
&lt;p&gt;🎯 本课目标&lt;/p&gt;
&lt;p&gt;在 Dify 控制台里完成至少 2 个模型的接入配置，并理解不同模型类型（系统推理 / 对话 / Embedding）的区别与用途。&lt;/p&gt;
&lt;h2&gt;一、Dify 里的 4 种模型类型&lt;/h2&gt;
&lt;p&gt;在配置模型之前，先搞清楚 Dify 把模型分成哪几类——这关系到你该配置哪些模型：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;模型类型&lt;/th&gt;
&lt;th style="text-align: left;"&gt;作用&lt;/th&gt;
&lt;th style="text-align: left;"&gt;举例&lt;/th&gt;
&lt;th style="text-align: left;"&gt;必须？&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;系统推理模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;平台核心大脑，用于工作流、Agent 等所有 AI 推理&lt;/td&gt;
&lt;td style="text-align: left;"&gt;DeepSeek-V3、GPT-4o、Claude 3.5&lt;/td&gt;
&lt;td style="text-align: left;"&gt;✅ 必须&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;对话模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;聊天应用的专用模型，支持多轮对话&lt;/td&gt;
&lt;td style="text-align: left;"&gt;同上（通常共用）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;⚠️ 建议&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;Embedding 模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;把文本转成向量，用于知识库语义检索（RAG）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;text-embedding-3-small、bge-m3&lt;/td&gt;
&lt;td style="text-align: left;"&gt;✅ 用知识库必须&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;语音/图像模型&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;语音转文字、图像生成等扩展能力&lt;/td&gt;
&lt;td style="text-align: left;"&gt;Whisper、Stable Diffusion&lt;/td&gt;
&lt;td style="text-align: left;"&gt;❌ 可选&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;💡 最小配置方案&lt;/strong&gt;：至少配置 1 个系统推理模型 + 1 个 Embedding 模型，就能跑通"聊天 + 知识库问答"的完整流程。&lt;/p&gt;
&lt;h2&gt;二、推荐模型供应商对比&lt;/h2&gt;
&lt;p&gt;国内用户推荐以下 3 家，免费额度充足、中文支持好、接入简单：&lt;/p&gt;
&lt;p&gt;⭐ 最推荐&lt;/p&gt;
&lt;h4&gt;DeepSeek&lt;/h4&gt;
&lt;p&gt;¥1 / 百万 Token（输入）&lt;/p&gt;
&lt;p&gt;中文理解极佳，推理能力强，价格极低，新用户送 500 万 Token。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;接入步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册 platform.deepseek.com&lt;/li&gt;
&lt;li&gt;API 密钥 → 新建 Key&lt;/li&gt;
&lt;li&gt;Dify 设置 → 模型供应商 → DeepSeek → 输入 Key&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;免费额度&lt;/p&gt;
&lt;h4&gt;通义千问（阿里）&lt;/h4&gt;
&lt;p&gt;有免费额度，按量计费&lt;/p&gt;
&lt;p&gt;阿里系，国内访问稳定，与阿里云生态深度整合。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;接入步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册 dashscope.aliyun.com&lt;/li&gt;
&lt;li&gt;API-KEY 管理 → 创建 Key&lt;/li&gt;
&lt;li&gt;Dify 设置 → 模型供应商 → 通义千问 → 输入 Key&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;ChatGLM（智谱 AI）&lt;/h4&gt;
&lt;p&gt;有免费额度&lt;/p&gt;
&lt;p&gt;国产大模型，中文能力强，GLM-4 系列表现优秀。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;接入步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;注册 open.bigmodel.cn&lt;/li&gt;
&lt;li&gt;API 密钥 → 新建&lt;/li&gt;
&lt;li&gt;Dify 设置 → 模型供应商 → ChatGLM → 输入 Key&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Ollama（本地模型）&lt;/h4&gt;
&lt;p&gt;完全免费（本地运行）&lt;/p&gt;
&lt;p&gt;在 Debian 虚拟机里跑本地模型，数据完全不出本机，适合高隐私场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;接入步骤：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Debian 里安装 Ollama&lt;/li&gt;
&lt;li&gt;拉取模型：&lt;code&gt;ollama pull qwen2.5:7b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Dify 设置 → 模型供应商 → Ollama → 配置地址&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;三、实战：配置 DeepSeek（推荐首选）&lt;/h2&gt;
&lt;p&gt;跟着步骤走，5 分钟完成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; &lt;/p&gt;
&lt;h4&gt;获取 DeepSeek API Key&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;访问 &lt;a href="https://platform.deepseek.com"&gt;platform.deepseek.com&lt;/a&gt;，注册/登录&lt;/li&gt;
&lt;li&gt;左侧菜单 → &lt;strong&gt;API 密钥&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;点击"创建密钥"，名称随意（如 &lt;code&gt;dify-test&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复制 Key 并保存&lt;/strong&gt;（只显示一次！）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt; &lt;/p&gt;
&lt;h4&gt;在 Dify 里添加 DeepSeek&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;打开 Dify 控制台（http://你的虚拟机IP）&lt;/li&gt;
&lt;li&gt;右上角头像 → &lt;strong&gt;设置&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;左侧 → &lt;strong&gt;模型供应商&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;找到 &lt;strong&gt;DeepSeek&lt;/strong&gt;，点击"+"或"添加模型"&lt;/li&gt;
&lt;li&gt;填入 API Key，模型类型选"LLM"，模型名称选 &lt;code&gt;deepseek-chat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击"保存"&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt; &lt;/p&gt;
&lt;h4&gt;添加 Embedding 模型（知识库必备）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在同一个 DeepSeek 供应商页面，继续添加模型&lt;/li&gt;
&lt;li&gt;模型类型选 &lt;strong&gt;"Text Embedding"&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;模型名称选 &lt;code&gt;deepseek-embedder&lt;/code&gt;（如果 DeepSeek 没有 Embedding 模型，改用下面的备选方案）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ DeepSeek 没有 Embedding 模型！&lt;/p&gt;
&lt;p&gt;DeepSeek 目前只提供对话/推理模型，&lt;strong&gt;不提供 Embedding 模型&lt;/strong&gt;。配置知识库需要单独接入一个 Embedding 模型，推荐用 &lt;strong&gt;OpenAI（text-embedding-3-small）&lt;/strong&gt; 或 &lt;strong&gt;本地 Ollama + bge-m3&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;✅ 推荐组合（国内用户）&lt;/strong&gt;
系统推理：DeepSeek-V3（便宜、中文好）
Embedding：Ollama 本地跑 &lt;code&gt;bge-m3&lt;/code&gt;（完全免费，数据不出本机）&lt;/p&gt;
&lt;h2&gt;四、进阶：在 Debian 里跑本地模型（Ollama）&lt;/h2&gt;
&lt;p&gt;如果不想依赖任何第三方 API，可以在 Debian 虚拟机里直接跑模型。这样数据完全不出本机，适合对隐私要求高的场景。&lt;/p&gt;
&lt;h3&gt;安装 Ollama&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 在 Debian 虚拟机里执行 curl -fsSL https://ollama.com/install.sh | sh # 安装完成后，Ollama 会自动以服务运行 # 验证 ollama --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;拉取并运行 Embedding 模型&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 拉取 bge-m3（中文 Embedding 效果最好） ollama pull bge-m3 # 拉取一个对话模型（可选，完全离线运行） ollama pull qwen2.5:7b # 查看已安装的模型 ollama list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;在 Dify 里配置 Ollama&lt;/h3&gt;
&lt;p&gt;⚠️ 网络配置关键点&lt;/p&gt;
&lt;p&gt;Dify 的容器里访问 &lt;code&gt;localhost&lt;/code&gt; 指的是&lt;strong&gt;容器自己&lt;/strong&gt;，不是 Debian 宿主机。需要在 Dify 的 Ollama 配置里填 Debian 的&lt;strong&gt;内网 IP&lt;/strong&gt;（如 &lt;code&gt;http://192.168.1.105:11434&lt;/code&gt;），而不是 &lt;code&gt;localhost:11434&lt;/code&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dify 控制台 → 设置 → 模型供应商 → 找到 &lt;strong&gt;Ollama&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;模型类型：Text Embedding，模型名称：&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Base URL：填 &lt;code&gt;http://你的DebianIP:11434&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;五、验证模型配置成功&lt;/h2&gt;
&lt;p&gt;✅ 验证清单&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 设置 → 模型供应商 页面能看到已添加的模型，状态为"已启用"&lt;/li&gt;
&lt;li&gt;✅ 创建一个"聊天助手"应用，能正常对话&lt;/li&gt;
&lt;li&gt;✅ 创建一个知识库，能成功上传文档并完成向量化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;快速测试对话：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;工作台 → 创建应用 → 聊天助手&lt;/li&gt;
&lt;li&gt;应用名称随意（如"测试助手"）&lt;/li&gt;
&lt;li&gt;提示词：简单写一句，如"你是一个有帮助的 AI 助手"&lt;/li&gt;
&lt;li&gt;选择你刚配置的模型（如 DeepSeek-V3）&lt;/li&gt;
&lt;li&gt;点击"预览"，输入一句话测试&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📷 提示：第一次对话会稍慢（模型冷启动），之后就快了
如果报错，检查 API Key 是否正确、账户是否有余额&lt;/p&gt;
&lt;h2&gt;六、费用控制与最佳实践&lt;/h2&gt;
&lt;p&gt;💰 费用参考（2026 年价格）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek-V3&lt;/strong&gt;：输入 ¥1/百万 Token，输出 ¥2/百万 Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek-R1（推理模型）&lt;/strong&gt;：输入 ¥4/百万 Token，输出 ¥16/百万 Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一次普通对话&lt;/strong&gt;：约消耗 500-2000 Token，成本约 ¥0.001-¥0.004&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结论&lt;/strong&gt;：个人/小团队测试，¥10 能用很久&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;最佳实践&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分开配置多个模型&lt;/strong&gt;：轻量任务用便宜模型（DeepSeek-V3），复杂推理用强模型（Claude/GPT-4o）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;设置 Token 限制&lt;/strong&gt;：在 Dify 应用设置里限制最大 Token 数，防止异常消耗&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;本地 Embedding&lt;/strong&gt;：用 Ollama 跑 bge-m3，知识库检索不花 API 钱&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定期检查用量&lt;/strong&gt;：Dify 控制台 → 观测 → 日志，可以看到每次对话的 Token 消耗&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;七、常见问题排查&lt;/h2&gt;
&lt;p&gt;❌ 报错："模型供应商 API 请求失败"&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查 API Key 是否正确（注意前后空格）&lt;/li&gt;
&lt;li&gt;检查账户是否有余额（DeepSeek 新用户有免费额度，但也会用完）&lt;/li&gt;
&lt;li&gt;检查 Debian 虚拟机能否访问外网（&lt;code&gt;curl https://api.deepseek.com&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ Ollama 模型在 Dify 里连不上&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确认 Ollama 服务在运行：&lt;code&gt;systemctl status ollama&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;确认 Dify 里填的是 Debian &lt;strong&gt;内网 IP&lt;/strong&gt;，不是 localhost&lt;/li&gt;
&lt;li&gt;确认防火墙放行 11434 端口：&lt;code&gt;sudo ufw allow 11434&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ 知识库上传文档后向量化失败&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查是否配置了 Embedding 模型&lt;/li&gt;
&lt;li&gt;检查 Embedding 模型的 API Key / 连接是否正常&lt;/li&gt;
&lt;li&gt;文档格式是否支持（PDF/Word/TXT/Markdown 都支持）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;八、本节课重点回顾&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✅ Dify 有 4 种模型类型，最小配置需要"系统推理 + Embedding"&lt;/li&gt;
&lt;li&gt;✅ 推荐组合：DeepSeek-V3（推理）+ Ollama/bge-m3（Embedding，免费）&lt;/li&gt;
&lt;li&gt;✅ DeepSeek 接入：获取 API Key → Dify 设置 → 模型供应商 → 添加&lt;/li&gt;
&lt;li&gt;✅ Ollama 本地模型：数据不出本机，适合高隐私场景&lt;/li&gt;
&lt;li&gt;✅ 验证方法：创建聊天助手应用，发一条消息测试&lt;/li&gt;
&lt;li&gt;✅ 费用极低：个人测试 ¥10 能用很久&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;▶ 下一课预告&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第 4 课：知识库构建与 RAG 实战——上传你的第一份文档，搭建专属问答系统&lt;/p&gt;
&lt;p&gt;模型已配好，下一步就是让 AI "读懂"你的私有资料！&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://platform.deepseek.com"&gt;DeepSeek 开放平台&lt;/a&gt; — 注册获取 API Key&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ollama.com/library/bge-m3"&gt;Ollama - bge-m3 模型&lt;/a&gt; — 中文 Embedding 最佳选择&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.dify.ai/zh/use-dify/model-providers"&gt;Dify 官方文档 - 模型供应商配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.dify.ai/zh/use-dify/knowledge-base"&gt;Dify 官方文档 - 知识库&lt;/a&gt; — 第 4 课预习&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置过程中遇到问题，把报错截图或文字发给我，我帮你排查 🔧&lt;/p&gt;</content><category term="dify"/><category term="dify"/></entry><entry><title>在 Debian 虚拟机上部署 Dify</title><link href="https://www.youy-x.top/zai-debian-xu-ni-ji-shang-bu-shu-dify.html" rel="alternate"/><published>2026-06-27T00:00:00+08:00</published><updated>2026-06-27T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-27:/zai-debian-xu-ni-ji-shang-bu-shu-dify.html</id><summary type="html">&lt;p&gt;在你的 Debian 虚拟机上，用 Docker Compose 一键部署 Dify，并完成初始化设置，看到 Dify 的登录页面&lt;/p&gt;</summary><content type="html">&lt;p&gt;第二课&lt;/p&gt;
&lt;h1&gt;在 Debian 虚拟机上部署 Dify&lt;/h1&gt;
&lt;p&gt;跟着步骤走，5 分钟让你的第一个 AI 平台跑起来&lt;/p&gt;
&lt;p&gt;⏱ 预计时间：15-20 分钟（不含镜像下载等待时间）&lt;/p&gt;
&lt;p&gt;🎯 本课目标&lt;/p&gt;
&lt;p&gt;在你的 Debian 虚拟机上，用 Docker Compose 一键部署 Dify，并完成初始化设置，看到 Dify 的登录页面。&lt;/p&gt;
&lt;h2&gt;一、前置检查&lt;/h2&gt;
&lt;p&gt;在动手之前，先确认你的 Debian 虚拟机已经准备好：&lt;/p&gt;
&lt;p&gt;✅ 你需要有的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一台运行中的 Debian 虚拟机（推荐 Debian 12）&lt;/li&gt;
&lt;li&gt;已安装 Docker Engine（如果没装，下面有步骤）&lt;/li&gt;
&lt;li&gt;虚拟机网络可访问外网&lt;/li&gt;
&lt;li&gt;Windows 宿主机能 ping 通虚拟机 IP（桥接模式最佳）&lt;/li&gt;
&lt;li&gt;虚拟机至少 4GB 内存 + 20GB 空闲磁盘&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;检查 Docker 是否已安装&lt;/h3&gt;
&lt;p&gt;debian-vm ~&lt;/p&gt;
&lt;p&gt;$ docker --version Docker version 27.5.1, build 9f9e405 $ docker compose version Docker Compose version v2.32.4&lt;/p&gt;
&lt;p&gt;Docker 已有，直接跳到第 2 步&lt;/p&gt;
&lt;p&gt;没有 Docker？→ 往下看"安装 Docker"&lt;/p&gt;
&lt;h3&gt;如果没装 Docker，先装它&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# 1. 安装依赖 sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # 2. 添加 Docker 官方源 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \  &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \  https://download.docker.com/linux/debian $(lsb_release -cs) stable&amp;quot; | \  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null # 3. 安装 Docker sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io \  docker-buildx-plugin docker-compose-plugin # 4. 将当前用户加入 docker 组（避免每次输 sudo） sudo usermod -aG docker $USER # ⚠️ 然后注销重新登录（或执行 newgrp docker）&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;⚠️ 国内镜像加速&lt;/strong&gt; —— 如果不配置，拉取 Dify 镜像可能很慢（有时会超时）。强烈建议执行下面这步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tee&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;daemon&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;EOF&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;registry-mirrors&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://docker.m.daocloud.io&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://hub-mirror.c.163.com&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://mirror.baidubce.com&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;log-driver&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;json-file&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;log-opts&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;max-size&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;10m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;max-file&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EOF&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;systemctl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;daemon&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reload&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;systemctl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;restart&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;二、部署 Dify&lt;/h2&gt;
&lt;h3&gt;Step 1：克隆 Dify 仓库&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git clone https://github.com/langgenius/dify.git cd dify/docker
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;成功后会看到&lt;code&gt;dify/docker/&lt;/code&gt;目录，里面有&lt;code&gt;docker-compose.yml&lt;/code&gt;和&lt;code&gt;.env.example&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Step 2：创建配置文件&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;cp .env.example .env
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;默认配置已经可以直接使用。如果你后续需要调整模型密钥、数据库密码等，后续再修改 &lt;code&gt;.env&lt;/code&gt; 文件。&lt;/p&gt;
&lt;h3&gt;Step 3：启动 Dify&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 启动所有服务（后台运行） docker compose up -d # 查看启动状态 docker compose ps
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;首次启动会拉取镜像，需要等待几分钟（取决于网络速度）。&lt;strong&gt;这是最耗时的步骤，耐心等待。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;debian-vm ~/dify/docker&lt;/p&gt;
&lt;p&gt;$ docker compose up -d [+] Running 6/6 ✔ Container dify-nginx-1       Started ✔ Container dify-api-1         Started ✔ Container dify-worker-1      Started ✔ Container dify-web-1         Started ✔ Container db-1               Started ✔ Container redis-1            Started&lt;/p&gt;
&lt;p&gt;看到所有容器都是 &lt;strong&gt;Up&lt;/strong&gt; 状态，就说明启动成功了。&lt;/p&gt;
&lt;h3&gt;Step 4：检查日志（可选）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 查看 Dify API 的启动日志 docker compose logs dify-api --tail=50 # 如果某服务挂了，查看具体错误 docker compose logs [服务名] --tail=100
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;三、初始化设置&lt;/h2&gt;
&lt;h3&gt;Step 5：访问 Dify&lt;/h3&gt;
&lt;p&gt;在 &lt;strong&gt;Windows 浏览器&lt;/strong&gt;（而非虚拟机内）访问：&lt;/p&gt;
&lt;p&gt;访问地址&lt;/p&gt;
&lt;p&gt;http://你的虚拟机IP&lt;/p&gt;
&lt;p&gt;💡 如何查看虚拟机 IP？在 Debian 里执行 &lt;code&gt;ip addr show | grep 'inet '&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;桥接模式 vs NAT 模式&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;桥接模式&lt;/strong&gt;：虚拟机有独立 IP（如 192.168.1.105），可直接访问
&lt;strong&gt;NAT 模式&lt;/strong&gt;：需要在 VirtualBox 设置端口转发（主机 80 → 子系统 80）&lt;/p&gt;
&lt;p&gt;在浏览器打开的页面应该是这样的：&lt;/p&gt;
&lt;p&gt;首次访问会自动跳转到&lt;strong&gt;初始化管理员账号页面&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Step 6：创建管理员账号&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;填写邮箱、姓名、密码&lt;/li&gt;
&lt;li&gt;点击"创建管理员"&lt;/li&gt;
&lt;li&gt;登录进入 Dify 控制台&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;💡 建议&lt;/strong&gt;：使用真实邮箱，后续找回密码、邮件通知等功能会用到。密码用强密码（大小写 + 数字 + 特殊字符）。&lt;/p&gt;
&lt;h3&gt;Step 7：接入大模型（关键一步！）&lt;/h3&gt;
&lt;p&gt;Dify 本身不包含大模型，需要你自己配置 API Key。进入控制台后：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;设置 → 模型供应商 → 添加模型
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;如果是国内用户，推荐以下两种方式：&lt;/p&gt;
&lt;h4&gt;🅰️ DeepSeek（推荐）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;注册：platform.deepseek.com&lt;/li&gt;
&lt;li&gt;新用户送 500 万 Token&lt;/li&gt;
&lt;li&gt;便宜、中文好、速度快&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;🅱️ 通义千问&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;注册：dashscope.aliyun.com&lt;/li&gt;
&lt;li&gt;有免费额度赠送&lt;/li&gt;
&lt;li&gt;阿里生态，国内访问稳定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置完成后，你就可以创建你的第一个 AI 应用了！&lt;/p&gt;
&lt;h2&gt;四、常见问题排查&lt;/h2&gt;
&lt;p&gt;❌ 浏览器打不开页面&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确认虚拟机 IP 正确：&lt;code&gt;ip addr show&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;检查防火墙：&lt;code&gt;sudo iptables -L -n&lt;/code&gt;，必要时关掉：&lt;code&gt;sudo iptables -F&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;确认容器在运行：&lt;code&gt;docker compose ps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;NAT 模式需配置端口转发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ 容器启动后不断重启（Restarting）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看日志：&lt;code&gt;docker compose logs 容器名&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;常见原因：端口被占用、.env 配置错误、内存不足&lt;/li&gt;
&lt;li&gt;尝试重启整个服务：&lt;code&gt;docker compose restart&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ 拉取镜像超时&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查 Docker 镜像加速是否配置正确（参照前面的国内镜像配置）&lt;/li&gt;
&lt;li&gt;尝试单独拉取：&lt;code&gt;docker pull nginx:latest&lt;/code&gt; 测试网络&lt;/li&gt;
&lt;li&gt;挂梯子或换用国内镜像源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ 权限不足（Permission denied）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;执行 &lt;code&gt;sudo usermod -aG docker $USER&lt;/code&gt; 后记得&lt;strong&gt;注销重新登录&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;或用 &lt;code&gt;newgrp docker&lt;/code&gt; 立即生效&lt;/li&gt;
&lt;li&gt;临时方案：所有命令前加 &lt;code&gt;sudo&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;五、验证部署成功&lt;/h2&gt;
&lt;p&gt;按照以下清单确认一切正常：&lt;/p&gt;
&lt;p&gt;☑️ 部署完成检查清单&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 浏览器能打开 Dify 初始化页面&lt;/li&gt;
&lt;li&gt;✅ 成功创建管理员账号并登录&lt;/li&gt;
&lt;li&gt;✅ 成功配置至少一个模型供应商（DeepSeek / 通义千问）&lt;/li&gt;
&lt;li&gt;✅ 能看到 Dify 主控制台（工作台页面）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;debian-vm ~/dify/docker&lt;/p&gt;
&lt;p&gt;$ docker compose ps NAME                IMAGE                           STATUS       PORTS dify-api            langgenius/dify-api:1.1.3         Up 2 hours   5001/tcp dify-web            langgenius/dify-web:1.1.3         Up 2 hours   3000/tcp dify-worker         langgenius/dify-worker:1.1.3     Up 2 hours   5001/tcp dify-nginx          nginx:latest                      Up 2 hours   0.0.0.0:80-&amp;gt;80/tcp db                  postgres:15-alpine                 Up 2 hours   5432/tcp redis               redis:7-alpine                     Up 2 hours   6379/tcp&lt;/p&gt;
&lt;h2&gt;六、日常管理命令&lt;/h2&gt;
&lt;p&gt;部署完成后，记住这几个常用命令就够了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 启动 / 停止 / 重启 docker compose start docker compose stop docker compose restart # 查看实时日志（按 Ctrl+C 退出） docker compose logs -f # 更新 Dify（备份后执行） docker compose pull docker compose up -d # 彻底卸载 docker compose down -v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;⚠️ docker compose down -v 会删除所有数据（包括数据库和向量库）&lt;/strong&gt;，生产环境千万别乱用！&lt;/p&gt;
&lt;h2&gt;七、本节课重点回顾&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✅ 确认 Docker 环境已就绪（需 Docker + Docker Compose）&lt;/li&gt;
&lt;li&gt;✅ 配置国内镜像加速，避免拉取超时&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;git clone&lt;/code&gt; → &lt;code&gt;cp .env.example .env&lt;/code&gt; → &lt;code&gt;docker compose up -d&lt;/code&gt; 三步搞定部署&lt;/li&gt;
&lt;li&gt;✅ 通过 &lt;strong&gt;Windows 浏览器 → 虚拟机 IP&lt;/strong&gt; 访问 Dify&lt;/li&gt;
&lt;li&gt;✅ 创建管理员账号 → 配置大模型 API Key → 开始使用&lt;/li&gt;
&lt;li&gt;✅ 记住日常管理命令（启动/停止/日志）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;▶ 下一课预告&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第 3 课：模型接入与配置实战——DeepSeek 通义千问任你挑&lt;/p&gt;
&lt;p&gt;部署已完成，下一步就是让你的 Dify 真正"有脑可动"——配置大模型！&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.dify.ai/zh/use-dify/getting-started/introduction"&gt;Dify 官方文档 - 快速开始&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.dify.ai/zh/use-dify/installation/install-server"&gt;Dify 官方文档 - 服务器安装&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/langgenius/dify"&gt;Dify GitHub 仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/engine/install/debian/"&gt;Docker 官方文档 - Debian 安装指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;部署遇到问题随时问我！发一下你的报错信息，我帮你排查 🚀&lt;/p&gt;</content><category term="dify"/><category term="dify"/></entry><entry><title>Dify 是什么</title><link href="https://www.youy-x.top/dify-shi-shi-yao.html" rel="alternate"/><published>2026-06-26T00:00:00+08:00</published><updated>2026-06-26T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-26:/dify-shi-shi-yao.html</id><summary type="html">&lt;p&gt;了解 Dify 的前世今生、核心功能模块和整体架构，建立对整个平台的宏观认知。&lt;/p&gt;</summary><content type="html">&lt;p&gt;第一课&lt;/p&gt;
&lt;h1&gt;Dify 是什么？—— 核心概念与架构概览&lt;/h1&gt;
&lt;p&gt;了解 Dify 的前世今生、核心功能模块和整体架构，建立对整个平台的宏观认知。&lt;/p&gt;
&lt;p&gt;⏱ 预计阅读时间：15 分钟&lt;/p&gt;
&lt;h2&gt;一、Dify 是什么？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dify&lt;/strong&gt; 是一个&lt;strong&gt;开源的 LLM 应用开发平台&lt;/strong&gt;。简单说，它让你不用写大量代码，就能搭建出专业级的 AI 应用——比如智能客服、企业内部知识库、自动化工作流等。&lt;/p&gt;
&lt;p&gt;一句话总结&lt;/p&gt;
&lt;p&gt;Dify = 可视化搭建 AI 应用的"乐高平台"——把大模型、知识库、工具链组装在一起，通过拖拽界面变成可用的产品。&lt;/p&gt;
&lt;h3&gt;核心定位&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对标 Coze&lt;/strong&gt;：Coze 是字节跳动的 SaaS 产品，Dify 是开源版本——你可以自己部署、数据完全掌控&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;面向开发者 + 业务人员&lt;/strong&gt;：可视化界面让非技术人员也能参与，同时也提供 API 让开发者深度集成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全生命周期覆盖&lt;/strong&gt;：从开发原型 → 测试 → 部署上线 → 监控运维，一站式完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;截至 2026 年 6 月，Dify 在 GitHub 上已收获 &lt;strong&gt;14 万 + Star&lt;/strong&gt;，成为全球增长最快的开源 AI 平台之一。&lt;/p&gt;
&lt;h2&gt;二、五大核心概念&lt;/h2&gt;
&lt;p&gt;Dify 的功能围绕以下 5 个核心模块展开：&lt;/p&gt;
&lt;p&gt;⚙️&lt;/p&gt;
&lt;h4&gt;工作流（Workflow）&lt;/h4&gt;
&lt;p&gt;可视化画布编排 AI 流程，支持条件分支、循环、并行执行，如同"AI 版 n8n"&lt;/p&gt;
&lt;p&gt;📚&lt;/p&gt;
&lt;h4&gt;知识库（Knowledge Base）&lt;/h4&gt;
&lt;p&gt;上传文档（PDF/Word/TXT），自动向量化存储，实现 RAG（检索增强生成）&lt;/p&gt;
&lt;p&gt;🤖&lt;/p&gt;
&lt;h4&gt;智能体（Agent）&lt;/h4&gt;
&lt;p&gt;基于 Function Calling 或 ReAct 模式的智能代理，可调用工具执行任务&lt;/p&gt;
&lt;p&gt;🧠&lt;/p&gt;
&lt;h4&gt;模型管理&lt;/h4&gt;
&lt;p&gt;统一接入 OpenAI、Claude、DeepSeek、通义千问等 20+ 模型，一键切换&lt;/p&gt;
&lt;p&gt;🔗&lt;/p&gt;
&lt;h4&gt;工具链（Tools）&lt;/h4&gt;
&lt;p&gt;50+ 内置工具（搜索、计算、图像生成等），也支持自定义 API 工具&lt;/p&gt;
&lt;p&gt;📊&lt;/p&gt;
&lt;h4&gt;观测分析&lt;/h4&gt;
&lt;p&gt;日志追踪、Token 用量统计、性能监控，便于持续优化&lt;/p&gt;
&lt;h3&gt;理解了这些概念，你就理解了 Dify 的核心设计哲学&lt;/h3&gt;
&lt;p&gt;这 5 个模块不是孤立的——你可以组合它们，比如：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：一个客服机器人 = 知识库（存产品手册） + Agent（主动分析问题） + 工作流（自动拉取订单信息） + 工具（调用查物流 API）&lt;/p&gt;
&lt;h2&gt;三、系统架构概览&lt;/h2&gt;
&lt;p&gt;了解 Dify 的架构有助于后续排查部署问题和理解开发流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│&lt;span class="w"&gt;                    &lt;/span&gt;用&lt;span class="w"&gt; &lt;/span&gt;户&lt;span class="w"&gt; &lt;/span&gt;访&lt;span class="w"&gt; &lt;/span&gt;问&lt;span class="w"&gt; &lt;/span&gt;层&lt;span class="w"&gt;                          &lt;/span&gt;│
│&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="nv"&gt;Web&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;界面&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="k"&gt;Next&lt;/span&gt;.&lt;span class="nv"&gt;js&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;API&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;接口&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;RESTful&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;│
└──────────────────────┬──────────────────────────────────┘
&lt;span class="w"&gt;                       &lt;/span&gt;│
┌──────────────────────▼──────────────────────────────────┐
│&lt;span class="w"&gt;                  &lt;/span&gt;应&lt;span class="w"&gt; &lt;/span&gt;用&lt;span class="w"&gt; &lt;/span&gt;服&lt;span class="w"&gt; &lt;/span&gt;务&lt;span class="w"&gt; &lt;/span&gt;层&lt;span class="w"&gt;                           &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;┌─────────────┐&lt;span class="w"&gt; &lt;/span&gt;┌──────────┐&lt;span class="w"&gt; &lt;/span&gt;┌──────────────────┐&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Workflow&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Agent&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Knowledge&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Base&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Engine&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Engine&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;RAG&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Pipeline&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;└─────────────┘&lt;span class="w"&gt; &lt;/span&gt;└──────────┘&lt;span class="w"&gt; &lt;/span&gt;└──────────────────┘&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;┌─────────────┐&lt;span class="w"&gt; &lt;/span&gt;┌──────────┐&lt;span class="w"&gt; &lt;/span&gt;┌──────────────────┐&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;LLM&lt;/span&gt;&lt;span class="w"&gt;       &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Tools&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Observability&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Gateway&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Runtime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;Monitor&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;│&lt;span class="w"&gt;     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;└─────────────┘&lt;span class="w"&gt; &lt;/span&gt;└──────────┘&lt;span class="w"&gt; &lt;/span&gt;└──────────────────┘&lt;span class="w"&gt;     &lt;/span&gt;│
└──────────────────────┬──────────────────────────────────┘
&lt;span class="w"&gt;                       &lt;/span&gt;│
┌──────────────────────▼──────────────────────────────────┐
│&lt;span class="w"&gt;                  &lt;/span&gt;数&lt;span class="w"&gt; &lt;/span&gt;据&lt;span class="w"&gt; &lt;/span&gt;存&lt;span class="w"&gt; &lt;/span&gt;储&lt;span class="w"&gt; &lt;/span&gt;层&lt;span class="w"&gt;                           &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;PostgreSQL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;业务数据&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Redis&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;缓存&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;                     &lt;/span&gt;│
│&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;Weaviate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;Qdrant&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;向量数据库&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;│&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;S3&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;本地&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;文件存储&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;│
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Dify 采用前后端分离架构，后端基于 Python Flask，前端基于 Next.js + React&lt;/p&gt;
&lt;h3&gt;关键组件详解&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;：存储用户、应用配置、会话记录等业务数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt;：缓存、会话管理、消息队列&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaviate / Qdrant&lt;/strong&gt;：向量数据库，用于知识库的语义检索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM Gateway&lt;/strong&gt;：统一模型调用层，屏蔽不同厂商 API 的差异&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow Engine&lt;/strong&gt;：可视化工作流编排的执行引擎，支持 DAG（有向无环图）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;💡 新手不需要立刻理解全部架构。&lt;/strong&gt; 先记住"前端 + 后端 API + 数据库（含向量库）"这个三层架构就够了。后续课程会在部署和开发中逐步深入。&lt;/p&gt;
&lt;h2&gt;四、Dify 能构建什么类型的应用？&lt;/h2&gt;
&lt;p&gt;💬&lt;/p&gt;
&lt;h4&gt;聊天助手&lt;/h4&gt;
&lt;p&gt;普通对话机器人，支持 Prompt 设定和上下文管理&lt;/p&gt;
&lt;p&gt;📄&lt;/p&gt;
&lt;h4&gt;文本生成&lt;/h4&gt;
&lt;p&gt;批量文案生成、翻译、摘要、报告撰写&lt;/p&gt;
&lt;p&gt;🔍&lt;/p&gt;
&lt;h4&gt;RAG 问答系统&lt;/h4&gt;
&lt;p&gt;基于私有知识库的问答，回答附带来源引用&lt;/p&gt;
&lt;p&gt;🛠️&lt;/p&gt;
&lt;h4&gt;Agent 智能体&lt;/h4&gt;
&lt;p&gt;能调用 API、执行代码、联网搜索的自主代理&lt;/p&gt;
&lt;p&gt;🔄&lt;/p&gt;
&lt;h4&gt;工作流应用&lt;/h4&gt;
&lt;p&gt;多步骤流程，如"文档翻译 → 审核 → 导出"&lt;/p&gt;
&lt;p&gt;📱&lt;/p&gt;
&lt;h4&gt;嵌入应用&lt;/h4&gt;
&lt;p&gt;通过 API 或 iframe 嵌入到现有网站/系统&lt;/p&gt;
&lt;h2&gt;五、动手环节：规划你的第一个 Dify 应用&lt;/h2&gt;
&lt;p&gt;✍️ 课后任务（5 分钟）&lt;/p&gt;
&lt;p&gt;在脑海中（或纸上）回答以下问题——这会在后续课程中直接用到：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你希望 Dify 帮助你解决什么具体业务问题？&lt;/li&gt;
&lt;li&gt;这个应用需要用到哪些核心功能（工作流 / 知识库 / Agent / 工具）？&lt;/li&gt;
&lt;li&gt;你打算用哪家的大模型（DeepSeek / 通义千问 / OpenAI...）？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果暂时想不清楚也没关系——我们会在第 2 课部署完 Dify 后，结合实际界面来边看边想。&lt;/p&gt;
&lt;h2&gt;六、本节课重点回顾&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;✅ Dify 是一个&lt;strong&gt;开源的 LLM 应用开发平台&lt;/strong&gt;，可以自部署、自控数据&lt;/li&gt;
&lt;li&gt;✅ 五大核心模块：&lt;strong&gt;工作流、知识库、Agent、模型管理、工具链&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;✅ 系统架构：前端（Next.js）+ 后端（Python Flask）+ 数据库（PostgreSQL + Redis + 向量数据库）&lt;/li&gt;
&lt;li&gt;✅ 能构建聊天助手、RAG 问答、Agent、工作流等多种应用类型&lt;/li&gt;
&lt;li&gt;✅ 适合小微企业：开源免费、数据可控、低代码快速落地&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;▶ 下一课预告&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第 2 课：在 Debian 虚拟机上用 Docker Compose 部署 Dify——手把手带你跑起来！&lt;/p&gt;
&lt;p&gt;建议先完成课后任务，带着目标进入后续课程&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.dify.ai/zh/use-dify/getting-started/introduction"&gt;Dify 官方文档（中文版）&lt;/a&gt; — 最权威的信息源，建议通读&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/langgenius/dify/blob/main/docs/zh-CN/README.md"&gt;Dify GitHub 中文 README&lt;/a&gt; — 快速了解项目全貌&lt;/li&gt;
&lt;li&gt;&lt;a href="https://txtmix.com/posts/tech/dify-agentic-workflow-development-platform-guide/"&gt;Dify 从入门到精通指南（2026）&lt;/a&gt; — 深度参考文章&lt;/li&gt;
&lt;li&gt;&lt;a href="https://juejin.cn/post/7636667427521118260"&gt;掘金：一个月飙到 139k Star，深度测评 Dify&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;学习过程中有任何疑问，随时问我。祝你学有所获！🚀&lt;/p&gt;</content><category term="dify"/><category term="dify"/></entry><entry><title>变量与数据类型</title><link href="https://www.youy-x.top/bian-liang-yu-shu-ju-lei-xing.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/bian-liang-yu-shu-ju-lei-xing.html</id><summary type="html">&lt;p&gt;程序本质上是在处理数据。这节课学习如何用变量存储数据。&lt;/p&gt;</summary><content type="html">&lt;p&gt;第一阶段：基础语法&lt;/p&gt;
&lt;p&gt;## 第二课：变量与数据类型&lt;/p&gt;
&lt;p&gt;程序本质上是在处理数据。这节课学习如何用变量存储数据，以及Python中最常用的几种数据类型。&lt;/p&gt;
&lt;h2&gt;一、理论知识&lt;/h2&gt;
&lt;p&gt;### 1.1 什么是变量？&lt;/p&gt;
&lt;p&gt;变量就像一个贴了标签的盒子，用来存储数据。给变量赋值就是往盒子里放东西。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;name = "小明"       # 把字符串"小明"放入名为name的变量
 age = 18             # 把整数18放入名为age的变量
 height = 1.75        # 把浮点数1.75放入名为height的变量&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;### 1.2 Python的变量特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;动态类型&lt;/strong&gt;：不需要提前声明类型，赋值时自动推断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;强类型&lt;/strong&gt;：一旦确定类型，不会自动转换（字符串不能直接和整数相加）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命名规则&lt;/strong&gt;：只能包含字母、数字、下划线；不能以数字开头；区分大小写&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;### 1.3 五大基本数据类型&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;类型&lt;/th&gt;
&lt;th style="text-align: left;"&gt;关键字&lt;/th&gt;
&lt;th style="text-align: left;"&gt;示例&lt;/th&gt;
&lt;th style="text-align: left;"&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;整数&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;42&lt;/code&gt;, &lt;code&gt;-7&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;计数、索引&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;浮点数&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;3.14&lt;/code&gt;, &lt;code&gt;-0.001&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;带小数的数值&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;字符串&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;str&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;"hello"&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;文本内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;布尔值&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;True&lt;/code&gt;, &lt;code&gt;False&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;真假判断&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;空值&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;NoneType&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;&lt;code&gt;None&lt;/code&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;表示"没有值"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;### 1.4 查看数据类型&lt;/p&gt;
&lt;p&gt;&lt;code&gt;print(type(42))          # &amp;lt;class 'int'
 print(type("hello"))    # &amp;lt;class 'str'
 print(type(3.14))        # &amp;lt;class 'float'
 print(type(True))        # &amp;lt;class 'bool'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;### 1.5 类型转换&lt;/p&gt;
&lt;p&gt;```
 # 转换为整数
 int("42")              # 42
 int(3.9)               # 3（截断小数，不是四舍五入）&lt;/p&gt;
&lt;p&gt;# 转换为浮点数
 float(42)               # 42.0&lt;/p&gt;
&lt;p&gt;# 转换为字符串
 str(42)                 # "42"&lt;/p&gt;
&lt;p&gt;# 转换为布尔值
 bool(0)                  # False
 bool(1)                  # True
 bool("")                 # False（空字符串为False）
 bool("hi")               # True
 ```&lt;/p&gt;
&lt;p&gt;⚠️ 常见错误&lt;/p&gt;
&lt;p&gt;&lt;code&gt;int("hello")&lt;/code&gt; 会报错！因为"hello"无法转换为整数。只有数字字符串才能转。&lt;/p&gt;
&lt;p&gt;## 二、实操演示&lt;/p&gt;
&lt;p&gt;### 2.1 变量交换&lt;/p&gt;
&lt;p&gt;```
 # 交换两个变量的值
 a = 10
 b = 20
 print("交换前:", a, b)  # 交换前: 10 20&lt;/p&gt;
&lt;p&gt;a, b = b, a
 print("交换后:", a, b)  # 交换后: 20 10
 ```&lt;/p&gt;
&lt;p&gt;### 2.2 字符串拼接与格式化&lt;/p&gt;
&lt;p&gt;```
 name = "小明"
 age = 18&lt;/p&gt;
&lt;p&gt;# f-string（推荐）
 print(f"我叫{name}，今年{age}岁")
 # 输出: 我叫小明，今年18岁&lt;/p&gt;
&lt;p&gt;# 也可以用 + 拼接（需要类型转换）
 print("我叫" + name + "，今年" + str(age) + "岁")
 ```&lt;/p&gt;
&lt;p&gt;### 2.3 字符串的基本操作&lt;/p&gt;
&lt;p&gt;&lt;code&gt;text = "Hello, Python!"
 print(len(text))           # 14（字符串长度）
 print(text.upper())        # HELLO, PYTHON!
 print(text.lower())        # hello, python!
 print(text.split(","))     # ['Hello', ' Python!']
 print(text[0])             # H（索引从0开始）
 print(text[7:13])          # Pytho（切片）&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;## 三、动手练习&lt;/p&gt;
&lt;p&gt;练习 2.1：温度转换器 简单&lt;/p&gt;
&lt;p&gt;摄氏温度转华氏温度的公式：华氏 = 摄氏 × 9/5 + 32&lt;/p&gt;
&lt;p&gt;编写一个脚本 &lt;code&gt;temp_converter.py&lt;/code&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义一个变量 &lt;code&gt;celsius&lt;/code&gt;，赋值为 36.5&lt;/li&gt;
&lt;li&gt;计算对应的华氏温度&lt;/li&gt;
&lt;li&gt;用 f-string 输出：&lt;code&gt;"36.5摄氏度 = XX.X华氏度"&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;练习 2.2：购物清单 简单&lt;/p&gt;
&lt;p&gt;模拟一个简单的购物计算：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定义商品单价：&lt;code&gt;price = 25.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;定义购买数量：&lt;code&gt;quantity = 3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;计算总价 &lt;code&gt;total = price * quantity&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;输出：&lt;code&gt;"购买3件商品，单价25.5元，总计XX.X元"&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;练习 2.3：信息卡片 中等&lt;/p&gt;
&lt;p&gt;创建变量存储个人信息，然后输出一张格式化的信息卡：&lt;/p&gt;
&lt;p&gt;```
 name = "张三"
 age = 20
 city = "北京"
 gpa = 3.85&lt;/p&gt;
&lt;p&gt;# 输出格式如下：
 # ╔══════════════════╗
 # ║   个 人 信 息    ║
 # ╠══════════════════╣
 # ║ 姓名：张三       ║
 # ║ 年龄：20岁       ║
 # ║ 城市：北京       ║
 # ║ 绩点：3.85       ║
 # ╚══════════════════╝
 ```&lt;/p&gt;
&lt;p&gt;练习 2.4：字符串侦探 中等&lt;/p&gt;
&lt;p&gt;给定字符串 &lt;code&gt;s = "Python is awesome"&lt;/code&gt;，在交互模式中尝试：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;获取字符串长度&lt;/li&gt;
&lt;li&gt;提取第一个单词 "Python"&lt;/li&gt;
&lt;li&gt;提取最后一个单词 "awesome"&lt;/li&gt;
&lt;li&gt;将所有字母转为大写&lt;/li&gt;
&lt;li&gt;将空格替换为连字符 &lt;code&gt;-&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：查阅 &lt;a href="../reference/glossary.html"&gt;术语表&lt;/a&gt; 中的字符串方法。&lt;/p&gt;
&lt;p&gt;## 四、本课要点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;变量是存储数据的容器，赋值即用 &lt;code&gt;=&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;五种基本类型：int、float、str、bool、None&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;type()&lt;/code&gt; 查看数据类型&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;int()&lt;/code&gt;、&lt;code&gt;float()&lt;/code&gt;、&lt;code&gt;str()&lt;/code&gt;、&lt;code&gt;bool()&lt;/code&gt; 进行类型转换&lt;/li&gt;
&lt;li&gt;f-string 是格式化字符串的最佳方式：&lt;code&gt;f"值={variable}"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;字符串索引从0开始，支持切片 &lt;code&gt;s[start:end]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📚 推荐阅读&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.python.org/zh-cn/3/tutorial/introduction.html"&gt;Python官方教程 - 速览&lt;/a&gt; — 官方文档中的快速入门章节。&lt;/p&gt;
&lt;p&gt;💡 学习建议&lt;/p&gt;
&lt;p&gt;在交互模式中多尝试类型转换，看看哪些能成功、哪些会报错。理解"什么能转、什么不能转"比死记硬背更重要。&lt;/p&gt;</content><category term="python"/><category term="python"/></entry><entry><title>Hello Python — 你的第一个Python程序</title><link href="https://www.youy-x.top/hello-python-ni-de-di-yi-ge-pythoncheng-xu.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/hello-python-ni-de-di-yi-ge-pythoncheng-xu.html</id><summary type="html">&lt;p&gt;欢迎来到Python的世界！这节课我们将了解Python是什么、写出第一行代码。&lt;/p&gt;</summary><content type="html">&lt;p&gt;第一阶段：基础语法&lt;/p&gt;
&lt;h2&gt;第一课：Hello Python — 你的第一个Python程序&lt;/h2&gt;
&lt;p&gt;欢迎来到Python的世界！这节课我们将了解Python是什么、写出第一行代码。&lt;/p&gt;
&lt;h2&gt;一、理论知识&lt;/h2&gt;
&lt;h3&gt;1.1 什么是Python？&lt;/h3&gt;
&lt;p&gt;Python是一种&lt;strong&gt;高级、解释型、通用编程语言&lt;/strong&gt;，由Guido van Rossum于1991年发布。它的设计哲学强调代码可读性和简洁的语法。&lt;/p&gt;
&lt;p&gt;为什么选择Python？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;简单易学&lt;/strong&gt;：语法接近自然语言，零基础也能快速上手&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用广泛&lt;/strong&gt;：Web开发、数据分析、人工智能、自动化脚本、游戏开发……&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生态丰富&lt;/strong&gt;：拥有超过40万个第三方库（PyPI）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台&lt;/strong&gt;：Windows、macOS、Linux都能运行&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2 Python如何工作？&lt;/h3&gt;
&lt;p&gt;Python是&lt;strong&gt;解释型语言&lt;/strong&gt;。这意味着代码不是像C语言那样预先编译成机器码，而是由Python解释器逐行读取并执行。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# 工作流程：
你写的代码  →  Python解释器  →  计算机执行
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;1.3 两种运行方式&lt;/h3&gt;
&lt;p&gt;Python有两种主要使用方式：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;方式&lt;/th&gt;
&lt;th style="text-align: left;"&gt;说明&lt;/th&gt;
&lt;th style="text-align: left;"&gt;适用场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;交互式（REPL）&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;逐行输入，立即看到结果&lt;/td&gt;
&lt;td style="text-align: left;"&gt;测试小段代码、学习探索&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;&lt;strong&gt;脚本模式&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left;"&gt;把代码写入 .py 文件，一次性运行&lt;/td&gt;
&lt;td style="text-align: left;"&gt;实际项目、复杂程序&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;1.4 print() 函数&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;print()&lt;/code&gt; 是Python最常用的内置函数，用于在屏幕上输出内容。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;print(&amp;quot;Hello, World!&amp;quot;)
print(&amp;quot;你好&amp;quot;, &amp;quot;世界&amp;quot;)
print(42)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Hello, World! 你好 世界 42&lt;/p&gt;
&lt;h2&gt;二、实操演示&lt;/h2&gt;
&lt;h3&gt;2.1 使用交互式Python&lt;/h3&gt;
&lt;p&gt;打开终端（命令提示符），输入 &lt;code&gt;python&lt;/code&gt;（Windows）或 &lt;code&gt;python3&lt;/code&gt;（macOS/Linux），进入交互模式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;python
Python&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.12.0
Type&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;help&amp;quot;&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;copyright&amp;quot;&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;credits&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;or&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;license&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;more&lt;span class="w"&gt; &lt;/span&gt;information.
&amp;gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Hello, Python!&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
Hello,&lt;span class="w"&gt; &lt;/span&gt;Python!
&amp;gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;exit&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;2.2 编写Python脚本&lt;/h3&gt;
&lt;p&gt;创建一个名为 &lt;code&gt;hello.py&lt;/code&gt; 的文件，写入以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;# hello.py - 我的第一个Python程序
print(&amp;quot;Hello, World!&amp;quot;)
print(&amp;quot;我正在学习Python&amp;quot;)
print(&amp;quot;Python真有趣！&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;在终端中运行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;hello.py
Hello,&lt;span class="w"&gt; &lt;/span&gt;World!
我正在学习Python
Python真有趣！
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;2.3 使用注释&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;#&lt;/code&gt; 后面的文字是注释，Python不会执行它们。注释用来解释代码的目的。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;#&lt;/span&gt; 这是单行注释
print(&amp;quot;注释不影响程序运行&amp;quot;)

&lt;span class="gh"&gt;#&lt;/span&gt; 下面计算 2 的 10 次方
print(2 ** 10)  # 输出 1024
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;三、动手练习&lt;/h2&gt;
&lt;p&gt;练习 1.1：自我介绍 简单&lt;/p&gt;
&lt;p&gt;创建一个名为 &lt;code&gt;intro.py&lt;/code&gt; 的文件，让它输出以下三行内容：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你的名字（可以用任意字符串代替）&lt;/li&gt;
&lt;li&gt;一句话介绍你为什么学Python&lt;/li&gt;
&lt;li&gt;一句鼓励自己的话&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：每行用一个 &lt;code&gt;print()&lt;/code&gt; 函数。&lt;/p&gt;
&lt;p&gt;练习 1.2：数学计算器 简单&lt;/p&gt;
&lt;p&gt;在Python交互模式中，直接输入以下表达式，观察输出结果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100 + 250&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;17 * 23&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1000 / 7&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;2 ** 10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100 % 7&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;想一想：哪个运算符表示"取余数"？哪个表示"幂运算"？&lt;/p&gt;
&lt;p&gt;练习 1.3：趣味输出 中等&lt;/p&gt;
&lt;p&gt;编写一个脚本 &lt;code&gt;fun.py&lt;/code&gt;，输出如下图案：&lt;/p&gt;
&lt;p&gt;^&lt;strong&gt;^  (o__o)\  (&lt;/strong&gt;)  )_______     ((    /\      ||--w |      ||    ||&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;提示&lt;/strong&gt;：每一行用单独的 &lt;code&gt;print()&lt;/code&gt;。&lt;/p&gt;
&lt;h2&gt;四、本课要点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Python是解释型语言，代码由解释器逐行执行&lt;/li&gt;
&lt;li&gt;有两种运行方式：交互式（REPL）和脚本模式（.py文件）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;print()&lt;/code&gt; 用于输出内容到屏幕&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#&lt;/code&gt; 开头的文字是注释，不会被执行&lt;/li&gt;
&lt;li&gt;每个Python脚本保存为 &lt;code&gt;.py&lt;/code&gt; 后缀的文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📚 推荐阅读&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.python.org/zh-cn/3/tutorial/index.html"&gt;Python官方教程 - 引言&lt;/a&gt; — 官方文档的入门章节，权威且详细。&lt;/p&gt;
&lt;p&gt;💡 学习建议&lt;/p&gt;
&lt;p&gt;不要只是阅读代码，一定要亲手敲一遍！肌肉记忆对编程学习非常重要。如果练习中遇到问题，随时向AI助手提问。&lt;/p&gt;</content><category term="python"/><category term="python"/></entry><entry><title>结构筑基</title><link href="https://www.youy-x.top/jie-gou-zhu-ji.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/jie-gou-zhu-ji.html</id><summary type="html">&lt;p&gt;结构是作文的"骨架"。骨架歪了，肉再好看也没用。中考阅卷老师看一篇作文平均只有&lt;strong&gt;1-2分钟&lt;/strong&gt;，结构清晰的文章，老师扫一眼就能看出你的思路。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;第3课：结构筑基 ——三六九框架，让结构不再乱&lt;/h1&gt;
&lt;p&gt;阶段 基础重塑 模型 三六九框架 实操占比 70%&lt;/p&gt;
&lt;h3&gt;📐 本课模型：三六九框架&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;口诀：三部分六要素九句话，考场作文不怕怕&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三部分&lt;/strong&gt;：开头 — 主体 — 结尾
&lt;strong&gt;六要素&lt;/strong&gt;：
① &lt;strong&gt;起&lt;/strong&gt;——开头点题，吸引注意
② &lt;strong&gt;承&lt;/strong&gt;——承接上文，展开叙述
③ &lt;strong&gt;转&lt;/strong&gt;——转折变化，制造波澜
④ &lt;strong&gt;合&lt;/strong&gt;——收束内容，回到主线
⑤ &lt;strong&gt;升&lt;/strong&gt;——升华主题，深化感悟
⑥ &lt;strong&gt;应&lt;/strong&gt;——呼应开头，余味悠长
&lt;strong&gt;九句话&lt;/strong&gt;：开头2句 + 主体6句 + 结尾1句（这是保底框架，可根据内容扩展）&lt;/p&gt;
&lt;h2&gt;为什么结构这么重要？&lt;/h2&gt;
&lt;p&gt;结构是作文的"骨架"。骨架歪了，肉再好看也没用。中考阅卷老师看一篇作文平均只有&lt;strong&gt;1-2分钟&lt;/strong&gt;，结构清晰的文章，老师扫一眼就能看出你的思路。&lt;/p&gt;
&lt;h2&gt;模型精讲&lt;/h2&gt;
&lt;h3&gt;三部分，缺一不可&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;部分&lt;/th&gt;
&lt;th style="text-align: left;"&gt;字数建议&lt;/th&gt;
&lt;th style="text-align: left;"&gt;作用&lt;/th&gt;
&lt;th style="text-align: left;"&gt;常见问题&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;开头&lt;/td&gt;
&lt;td style="text-align: left;"&gt;≈100字（约1/9）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;点题+吸引&lt;/td&gt;
&lt;td style="text-align: left;"&gt;绕圈子、不点题&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;主体&lt;/td&gt;
&lt;td style="text-align: left;"&gt;≈600-700字（约7/9）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;展开+叙事&lt;/td&gt;
&lt;td style="text-align: left;"&gt;流水账、无重点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;结尾&lt;/td&gt;
&lt;td style="text-align: left;"&gt;≈100字（约1/9）&lt;/td&gt;
&lt;td style="text-align: left;"&gt;升华+呼应&lt;/td&gt;
&lt;td style="text-align: left;"&gt;草草收尾、喊口号&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;六要素，层层递进&lt;/h3&gt;
&lt;h4&gt;范文分析：《这三年》（2025北京）&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;起&lt;/strong&gt;："三年前，我站在中学门口，忐忑又期待。三年后，我即将离开，才发现这三年给我的，远不止一张毕业证。"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;承&lt;/strong&gt;：写初一适应新环境的经历，交到第一个朋友……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;转&lt;/strong&gt;：初二成绩下滑，和父母吵架，第一次感受到挫败……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;合&lt;/strong&gt;：初三奋起直追，虽然最后成绩不是最好，但收获了坚韧……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;升&lt;/strong&gt;："我明白了，成长的本质不是变完美，而是学会接受不完美的自己。"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;应&lt;/strong&gt;："走出校门那刻，我回头看了一眼——谢谢你，这三年。"&lt;/p&gt;
&lt;h2&gt;实操指南：怎么用三六九框架&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;拿到题目后&lt;/strong&gt;：先别着急写，先画三部分（开头/主体/结尾）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主体部分&lt;/strong&gt;：按"起→承→转→合"四步安排内容，确保有"转"（有起伏）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结尾&lt;/strong&gt;：先"升"（升华主题）再"应"（呼应开头），尽量不要只做一样&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;段落设计&lt;/strong&gt;：5-7段最佳，不要超过7段，也不要少于4段&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;✍️ 当堂微写作（15分钟）&lt;/h3&gt;
&lt;p&gt;题目：&lt;strong&gt;《——让我成为更好的自己》&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;任务：用"三六九框架"列一份完整结构提纲。&lt;/p&gt;
&lt;p&gt;格式要求：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我选的题目：&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;_&lt;/em&gt;&lt;/strong&gt;让我成为更好的自己
&lt;strong&gt;三部分：&lt;/strong&gt;
——开头（100字，我打算写什么）
——主体（600字，分几个层次）
  起：
  承：
  转：
  合：
——结尾（100字，升什么+应什么）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;互评要点：&lt;/strong&gt;有没有"转"？结尾有没有"升"和"应"？&lt;/p&gt;
&lt;h2&gt;常见结构问题&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;② 三段式&lt;/strong&gt;（开头+中间+结尾各一段）——段太少，像提纲不像文章&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;② 头重脚轻&lt;/strong&gt;——开头写了200字还没进入正题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;③ 有起没有转&lt;/strong&gt;——平铺直叙，没有起伏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;④ 结尾喊口号&lt;/strong&gt;——"我们要努力学习报效祖国"——太空了&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📖 推荐阅读&lt;/h2&gt;
&lt;p&gt;王鼎钧《作文七巧》第二章——"叙事"篇，看大师如何安排故事结构。&lt;/p&gt;
&lt;h2&gt;📝 本课匹配范文（3篇）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;范文一：《当好自己故事的主角》&lt;/strong&gt;（2024广东中考）——完美符合"三部分六要素九句话"框架。开头点题→起承转合→结尾升华呼应。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;搜狐教育·2024广东满分作文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文二：《定心丸·那一抹微笑》&lt;/strong&gt;（2024河北中考）——"起"写紧张→"承"写经历→"转"写转折→"合"写感悟。六要素完整，段落层次清晰。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;搜狐教育·2024河北满分作文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文三：《我的成功密码》&lt;/strong&gt;（2024河南中考）——倒叙开头→主体分层→结尾总结。板块式与总分式结合的典范。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;搜狐教育·2024河南满分作文&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📌 &lt;strong&gt;阅读任务：&lt;/strong&gt;选1篇范文，用"三六九框架"标注它的起承转合升应在哪里，并画出结构图。&lt;/p&gt;
&lt;h3&gt;📚 分层作业&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;基础题（必做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找一篇中考一类文范文，用"三六九"框架分析它的结构，标注出起承转合升应在哪里&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;挑战题（选做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用三六九框架写一篇完整作文（600字以上），选题不限，但必须体现出"转"和"升"&lt;/li&gt;
&lt;/ul&gt;</content><category term="中学课程"/><category term="语文"/><category term="作文"/></entry><entry><title>立意升维</title><link href="https://www.youy-x.top/li-yi-sheng-wei.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/li-yi-sheng-wei.html</id><summary type="html">&lt;p&gt;审题决定了"写什么"，立意决定了"写到什么深度"。同样的题目，不同的立意，得分天差地别。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;第2课：立意升维 ——三阶立意法，让文章有深度&lt;/h1&gt;
&lt;p&gt;阶段 基础重塑 模型 三阶立意法 实操占比 75%&lt;/p&gt;
&lt;h3&gt;📐 本课模型：三阶立意法&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;口诀：先想大家怎么写，再想我该怎么写，最后想深一层怎么写&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;🥉 第一阶：人云亦云（常规立意）&lt;/h4&gt;
&lt;p&gt;大多数人想到的角度。不是不能用，但太平淡，得不了高分。&lt;/p&gt;
&lt;h4&gt;🥈 第二阶：独特体验（个性立意）&lt;/h4&gt;
&lt;p&gt;结合自己的真实经历、独特感受，写出"只有我能写"的内容。&lt;/p&gt;
&lt;h4&gt;🥇 第三阶：哲理感悟（深刻立意）&lt;/h4&gt;
&lt;p&gt;从具体事件中提炼出普遍的人生哲理，让读者有共鸣、有启发。&lt;/p&gt;
&lt;h2&gt;什么是"立意"？&lt;/h2&gt;
&lt;p&gt;简单说就是——&lt;strong&gt;你这篇文章到底想说什么&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;审题决定了"写什么"，立意决定了"写到什么深度"。同样的题目，不同的立意，得分天差地别。&lt;/p&gt;
&lt;h2&gt;模型精讲：三步升维&lt;/h2&gt;
&lt;h3&gt;演示：以《回家》为例（2024深圳）&lt;/h3&gt;
&lt;h4&gt;🥉 第一阶：常规立意&lt;/h4&gt;
&lt;p&gt;"放假了，我坐车回家，见到爸妈很开心。"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt;太普通，谁都能写，没有亮点。&lt;/p&gt;
&lt;h4&gt;🥈 第二阶：独特体验&lt;/h4&gt;
&lt;p&gt;"我爸妈在外地打工，一年才回一次老家。那趟绿皮火车，从起点到终点，跨越大半个中国。车窗外的风景从高楼变农田，我的心从兴奋变复杂——那里有爷爷奶奶，但也有我不熟悉的乡土。"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;亮点：&lt;/strong&gt;有真实背景，"跨越大半个中国"是独特的个人经历。&lt;/p&gt;
&lt;h4&gt;🥇 第三阶：哲理感悟&lt;/h4&gt;
&lt;p&gt;"以前觉得回家就是回一个房子。直到那次，我回到老屋，推开吱呀作响的木门，看见奶奶在灶台前烧火的身影。那一刻我突然明白——&lt;strong&gt;家不只是地理坐标，更是有人在等你。&lt;/strong&gt;真正的回家，是回到有人爱你的地方。"&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;亮点：&lt;/strong&gt;从小事中提炼出"家是有爱你的人在的地方"这个普遍哲理。&lt;/p&gt;
&lt;h2&gt;立意避"俗"指南&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left;"&gt;容易俗套的立意&lt;/th&gt;
&lt;th style="text-align: left;"&gt;怎么避开&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;母爱=妈妈送伞/半夜盖被子&lt;/td&gt;
&lt;td style="text-align: left;"&gt;选一个妈妈"不够完美"的真实瞬间——她也许不会说漂亮话，但她有自己笨拙的表达方式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;坚持=考砸了重新努力&lt;/td&gt;
&lt;td style="text-align: left;"&gt;选一件小事：学自行车摔了又摔、练字写到手指起茧——具体的细节比笼统的"努力"动人&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;成长=从不懂事到懂事&lt;/td&gt;
&lt;td style="text-align: left;"&gt;选一个具体的"瞬间"：比如看到爸爸的白发、第一次独自处理一件事&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left;"&gt;友谊=好朋友帮我补课&lt;/td&gt;
&lt;td style="text-align: left;"&gt;选一个"冲突"时刻：吵架后的和解、默默陪伴的一个下午&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;✍️ 当堂微写作（15分钟）&lt;/h3&gt;
&lt;p&gt;题目：以"我的老师"为主题，用三阶法写出三个立意方向。&lt;/p&gt;
&lt;p&gt;格式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🥉 第一阶：&lt;/strong&gt;（我猜大多数人会写……）
&lt;strong&gt;🥈 第二阶：&lt;/strong&gt;（我的独特体验是……）
&lt;strong&gt;🥇 第三阶：&lt;/strong&gt;（从这件事中，我感悟到……）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完成后小组交流：&lt;/strong&gt;谁的第三阶最打动人？为什么？&lt;/p&gt;
&lt;h2&gt;📖 推荐阅读&lt;/h2&gt;
&lt;p&gt;夏丏尊、叶圣陶《文心》——看两位大师如何从日常小事中提炼深意。&lt;/p&gt;
&lt;h2&gt;📝 本课匹配范文（3篇）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;范文一：《原来，我只想陪你一直到老》&lt;/strong&gt;——知乎满分作文。从"外婆为我梳头"的小事提炼出"陪伴是深情的告白"的哲理，第三阶立意典范。
   🔗 &lt;a href="https://zhuanlan.zhihu.com/p/521330888"&gt;知乎·中考满分作文（三十）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文二：《回家的味道》&lt;/strong&gt;（2024深圳中考变式）——避开"回家很开心"的浅层表达，挖掘"家是有爱你的人在的地方"的深层立意。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;搜狐教育·2024满分作文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文三：《从挫折出发》&lt;/strong&gt;（2023成都中考）——三阶层次清晰：常规→独特→哲理。适合逐阶分析。
   🔗 &lt;a href="https://www.zhongkao.com/beikao/zkzw/zkmf/"&gt;中考网·满分作文专区&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📌 &lt;strong&gt;阅读任务：&lt;/strong&gt;选出1篇范文，用三阶法标注它的三个立意层级，并写出你的升维方案。&lt;/p&gt;
&lt;h3&gt;📚 分层作业&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;基础题（必做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把你之前写的一篇作文拿出来，重新做一次"立意升维"——把原来的立意改写为更高一阶&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;挑战题（选做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用第三阶（哲理感悟）的立意，重新写一个200字以上的段落&lt;/li&gt;
&lt;/ul&gt;</content><category term="中学课程"/><category term="语文"/><category term="作文"/></entry><entry><title>Python安装与环境搭建</title><link href="https://www.youy-x.top/pythonan-zhuang-yu-huan-jing-da-jian.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/pythonan-zhuang-yu-huan-jing-da-jian.html</id><summary type="html">&lt;p&gt;python之路，万里长征第一步，纪念一下。&lt;/p&gt;</summary><content type="html">&lt;h1&gt;预备课：Python安装与环境搭建&lt;/h1&gt;
&lt;p&gt;在开始写代码之前，我们需要先准备好Python的运行环境。这节课会手把手带你完成安装和配置。&lt;/p&gt;
&lt;h2&gt;一、检查是否已安装&lt;/h2&gt;
&lt;h3&gt;Windows&lt;/h3&gt;
&lt;p&gt;按 &lt;code&gt;Win + R&lt;/code&gt;，输入 &lt;code&gt;cmd&lt;/code&gt; 打开命令提示符，然后输入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;如果显示 &lt;code&gt;Python 3.x.x&lt;/code&gt;，说明已安装。如果显示"不是内部或外部命令"，则需要安装。&lt;/p&gt;
&lt;h3&gt;macOS&lt;/h3&gt;
&lt;p&gt;打开"终端"（Spotlight搜索"Terminal"），输入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python3 --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;macOS通常自带Python 2.7（已废弃），我们需要安装Python 3。&lt;/p&gt;
&lt;h3&gt;Linux&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python3 --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;二、Windows 安装Python&lt;/h2&gt;
&lt;h3&gt;步骤1：下载安装包&lt;/h3&gt;
&lt;p&gt;打开浏览器，访问 Python 官网：&lt;/p&gt;
&lt;p&gt;https://www.python.org/downloads/windows/&lt;/p&gt;
&lt;p&gt;点击页面中央的大按钮 &lt;strong&gt;"Download Python 3.x.x"&lt;/strong&gt;（最新版）。&lt;/p&gt;
&lt;h3&gt;步骤2：运行安装程序&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;双击下载的 &lt;code&gt;python-3.x.x-amd64.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;务必勾选&lt;/strong&gt; &lt;code&gt;✅ Add Python to PATH&lt;/code&gt;（这一步非常重要！）&lt;/li&gt;
&lt;li&gt;点击 &lt;strong&gt;"Install Now"&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;⚠️ 重要提醒&lt;/p&gt;
&lt;p&gt;安装时如果不勾选 &lt;strong&gt;"Add Python to PATH"&lt;/strong&gt;，后续很多操作都会出问题。如果忘了勾选，需要卸载后重新安装。&lt;/p&gt;
&lt;h3&gt;步骤3：验证安装&lt;/h3&gt;
&lt;p&gt;关闭之前的命令提示符，重新打开一个新的，输入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Python 3.12.x&lt;/p&gt;
&lt;p&gt;看到版本号就说明安装成功了！&lt;/p&gt;
&lt;h3&gt;步骤4：验证 pip&lt;/h3&gt;
&lt;p&gt;pip 是Python的包管理工具，用来安装第三方库：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;pip 24.x.x from ... (python 3.12)&lt;/p&gt;
&lt;h2&gt;三、macOS 安装Python&lt;/h2&gt;
&lt;h3&gt;方法1：用 Homebrew（推荐）&lt;/h3&gt;
&lt;p&gt;如果你已经安装了Homebrew（macOS最常用的包管理器）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;brew install python3
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;方法2：从官网下载&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href="https://www.python.org/downloads/mac-osx/"&gt;python.org/downloads/mac-osx/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;下载 macOS 安装包&lt;/li&gt;
&lt;li&gt;双击安装，按提示操作&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;验证安装&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python3 --version
pip3 --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;四、Linux 安装Python&lt;/h2&gt;
&lt;h3&gt;Ubuntu/Debian&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo apt update
sudo apt install python3 python3-pip python3-venv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;CentOS/RHEL&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo yum install python3 python3-pip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;验证安装&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python3 --version
pip3 --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;五、选择代码编辑器&lt;/h2&gt;
&lt;p&gt;安装好Python后，你需要一个写代码的工具。推荐以下两种：&lt;/p&gt;
&lt;h3&gt;VS Code（强烈推荐）&lt;/h3&gt;
&lt;p&gt;微软出品，免费、轻量、功能强大，支持Python智能提示和调试。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载：&lt;a href="https://code.visualstudio.com/"&gt;code.visualstudio.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安装后，点击左侧扩展图标（方块图标）&lt;/li&gt;
&lt;li&gt;搜索 &lt;strong&gt;"Python"&lt;/strong&gt;，安装 Microsoft 官方的 Python 扩展&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;PyCharm（备选）&lt;/h3&gt;
&lt;p&gt;JetBrains出品，专业的Python IDE，功能更全面但较重。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载：&lt;a href="https://www.jetbrains.com/pycharm/download/"&gt;jetbrains.com/pycharm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;免费版（Community）足够初学者使用&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;六、虚拟环境（重要概念）&lt;/h2&gt;
&lt;p&gt;虚拟环境让你可以为每个项目创建独立的Python环境，避免不同项目的依赖冲突。&lt;/p&gt;
&lt;h3&gt;创建虚拟环境&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;#&lt;/span&gt; Windows
python -m venv myproject_env

&lt;span class="gh"&gt;#&lt;/span&gt; macOS / Linux
python3 -m venv myproject_env
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;激活虚拟环境&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;#&lt;/span&gt; Windows（CMD）
myproject_env\Scripts\activate

&lt;span class="gh"&gt;#&lt;/span&gt; Windows（PowerShell）
myproject_env\Scripts\Activate.ps1

&lt;span class="gh"&gt;#&lt;/span&gt; macOS / Linux
source myproject_env/bin/activate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;激活成功后，命令行前面会出现 &lt;code&gt;(myproject_env)&lt;/code&gt; 标记。&lt;/p&gt;
&lt;h3&gt;退出虚拟环境&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;deactivate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;七、第一次运行Python&lt;/h2&gt;
&lt;h3&gt;方法1：交互式模式（REPL）&lt;/h3&gt;
&lt;p&gt;在终端中输入 &lt;code&gt;python&lt;/code&gt;（Windows）或 &lt;code&gt;python3&lt;/code&gt;（macOS/Linux）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;python
&amp;gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;print&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Hello, Python!&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
Hello,&lt;span class="w"&gt; &lt;/span&gt;Python!
&amp;gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;exit&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;方法2：用VS Code运行&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;打开VS Code&lt;/li&gt;
&lt;li&gt;文件 → 新建文件 → 保存为 &lt;code&gt;hello.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;输入：&lt;code&gt;print("Hello, World!")&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;右键 → "Run Python File in Terminal"&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;八、动手练习&lt;/h2&gt;
&lt;p&gt;练习 0.1：验证安装 简单&lt;/p&gt;
&lt;p&gt;在终端中依次输入以下命令，确认都能正常运行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;python --version&lt;/code&gt; 或 &lt;code&gt;python3 --version&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pip --version&lt;/code&gt; 或 &lt;code&gt;pip3 --version&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;进入交互模式，计算 &lt;code&gt;2 ** 10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;退出交互模式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;练习 0.2：创建虚拟环境 简单&lt;/p&gt;
&lt;p&gt;在你的项目目录下创建一个名为 &lt;code&gt;python_course&lt;/code&gt; 的虚拟环境，并激活它。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;验证&lt;/strong&gt;：激活后，命令行提示符前面应该显示 &lt;code&gt;(python_course)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;练习 0.3：安装第一个第三方库 简单&lt;/p&gt;
&lt;p&gt;在激活的虚拟环境中，安装 requests 库：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip install requests
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;然后在Python交互模式中验证：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;__version__&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;九、本课要点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Windows安装时务必勾选 &lt;strong&gt;"Add Python to PATH"&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;macOS使用 &lt;code&gt;python3&lt;/code&gt; 和 &lt;code&gt;pip3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;推荐安装 VS Code + Python 扩展作为开发环境&lt;/li&gt;
&lt;li&gt;虚拟环境是每个Python项目的标配&lt;/li&gt;
&lt;li&gt;REPL（交互式模式）是学习和测试代码的好工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 常见问题排查&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;"python不是内部命令"&lt;/strong&gt;：没有勾选PATH，重新安装&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pip装不上&lt;/strong&gt;：尝试 &lt;code&gt;python -m pip install xxx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code不识别Python&lt;/strong&gt;：检查是否安装了Python扩展&lt;/li&gt;
&lt;/ul&gt;</content><category term="python"/><category term="python"/></entry><entry><title>审题定向</title><link href="https://www.youy-x.top/shen-ti-ding-xiang.html" rel="alternate"/><published>2026-06-24T00:00:00+08:00</published><updated>2026-06-24T00:00:00+08:00</updated><author><name>悠游</name></author><id>tag:www.youy-x.top,2026-06-24:/shen-ti-ding-xiang.html</id><summary type="html">&lt;p&gt;审题花5分钟，是考场最划算的"投资"&lt;/p&gt;</summary><content type="html">&lt;h1&gt;第1课：审题定向 ——三圈审题法，从此不跑题&lt;/h1&gt;
&lt;p&gt;阶段 基础重塑 模型 三圈审题法 实操占比 70%&lt;/p&gt;
&lt;h3&gt;📐 本课模型：三圈审题法&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;口诀：一审关键词，二审限制词，三审言外意&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一圈 · 圈关键词&lt;/strong&gt; —— 题目中最重要的实词（名词/动词/形容词）
&lt;strong&gt;第二圈 · 圈限制词&lt;/strong&gt; —— 限定范围、程度、时间、对象等（最/也/第一次/渐渐）
&lt;strong&gt;第三圈 · 圈深层意&lt;/strong&gt; —— 题目的比喻义、象征义、引申义（"山"可能指困难/"光"可能指希望）&lt;/p&gt;
&lt;h2&gt;为什么审题是第一关？&lt;/h2&gt;
&lt;p&gt;中考阅卷，第一眼看的不是字好不好看，而是——&lt;strong&gt;这篇文章有没有跑题&lt;/strong&gt;。一旦跑题，内容分直接掉到三类（0-11分），就算语言再美也白搭。&lt;/p&gt;
&lt;p&gt;审题花5分钟，是考场最划算的"投资"。&lt;/p&gt;
&lt;h2&gt;模型精讲：三圈审题法&lt;/h2&gt;
&lt;h3&gt;第一圈：圈关键词&lt;/h3&gt;
&lt;p&gt;把题目中的名词、动词、形容词圈出来。这些是题目的"骨架"。&lt;/p&gt;
&lt;h4&gt;例题：《为自己竖起大拇指》&lt;/h4&gt;
&lt;p&gt;自己 竖起大拇指&lt;/p&gt;
&lt;p&gt;→ "竖起大拇指"是比喻，不是真的竖手指，意思是&lt;strong&gt;为自己感到骄傲/自豪&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;第二圈：圈限制词&lt;/h3&gt;
&lt;p&gt;把"最""也""第一次""又"这类限制性词语圈出来。它们决定了写作的边界。&lt;/p&gt;
&lt;h4&gt;例题：《我也是个取水人》（2024上海）&lt;/h4&gt;
&lt;p&gt;我 取水人 也&lt;/p&gt;
&lt;p&gt;→ "也"字是关键限制！暗示别人可以是"取水人"，&lt;strong&gt;我同样是&lt;/strong&gt;。你不能只写"取水人"，必须写出"我也如此"这个对比认同的意味。&lt;/p&gt;
&lt;h3&gt;第三圈：圈深层意&lt;/h3&gt;
&lt;p&gt;很多题目有弦外之音。"山"可能不是山，"光"可能不是光。&lt;/p&gt;
&lt;h4&gt;例题：《心中的那座山》（2025重庆）&lt;/h4&gt;
&lt;p&gt;关键词：心中 山&lt;/p&gt;
&lt;p&gt;→ "山"在这里不是真的山，而是&lt;strong&gt;困难、目标、父亲、信念&lt;/strong&gt;等深层含义。选什么来当"山"，决定了你的立意高度。&lt;/p&gt;
&lt;h3&gt;✍️ 当堂微写作（15分钟）&lt;/h3&gt;
&lt;p&gt;用"三圈审题法"给下面3个题目做审题笔记：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;《——让生活更美好》（2024杭州）&lt;/li&gt;
&lt;li&gt;《从——出发》（2023成都）&lt;/li&gt;
&lt;li&gt;《这三年》（2025北京）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;格式要求：
题目：XXX
🔵 第一圈（关键词）：
🔴 第二圈（限制词）：
🟢 第三圈（深层意）：
我的初步立意方向：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完成后同桌互评：&lt;/strong&gt;有没有漏圈？深层意有没有挖到位？&lt;/p&gt;
&lt;h2&gt;常见审题"坑"&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;偷换概念&lt;/strong&gt;：题目写"成长"，你写"成功"——偏了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;忽略"最"字&lt;/strong&gt;：题目《最难忘的一天》，你写了"难忘的一天"——丢了"最"&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;忽略"也"字&lt;/strong&gt;：《这也是课堂》，"也"暗示不是传统课堂，要有错位感&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只看字面&lt;/strong&gt;：《门其实开着》——"门"是比喻，不是真的门&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📖 推荐阅读&lt;/h2&gt;
&lt;p&gt;王鼎钧《作文七巧》第一章——看大师如何解读"题眼"。&lt;/p&gt;
&lt;h2&gt;📝 本课匹配范文（3篇）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;范文一：《为自己竖起大拇指》&lt;/strong&gt;（2025广州中考）——三圈审题法"深层意"环节的绝佳示范。"竖起大拇指"的比喻义被精准扣住。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;搜狐教育·2024各地满分作文合集&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文二：《我也是个取水人》&lt;/strong&gt;（2024上海中考）——分析"也"字限制词的最佳范本。精准理解"也"的对比认同意味。
   🔗 &lt;a href="https://www.sohu.com/a/800564293_121124023"&gt;同上合集·上海卷&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范文三：《这三年》&lt;/strong&gt;（2025北京中考）——"这三年"限定时间范围，范文用起承转合分配内容，审清时间限制的典范。
   🔗 &lt;a href="https://www.zuowen.com/zhongkaozw/youxiu/index_100.shtml"&gt;作文网·中考满分作文大全&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;📌 &lt;strong&gt;阅读任务：&lt;/strong&gt;每篇范文用"三圈审题法"做一次审题分析，圈出关键词/限制词/深层意。&lt;/p&gt;
&lt;h3&gt;📚 分层作业&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;基础题（必做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找近3年5个中考作文题，用"三圈审题法"做审题笔录（写在作文病历本上）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;挑战题（选做）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从其中一题出发，用200字写出作文的开头——确保开头就扣题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 有任何疑问，随时问你的AI老师！&lt;/p&gt;</content><category term="中学课程"/><category term="语文"/><category term="作文"/></entry></feed>