<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>註解的習慣 &#8211; 龍冥 Blog</title>
	<atom:link href="https://dragongo.co/tag/%E8%A8%BB%E8%A7%A3%E7%9A%84%E7%BF%92%E6%85%A3/feed/" rel="self" type="application/rss+xml" />
	<link>https://dragongo.co</link>
	<description>Code &#38; Read</description>
	<lastBuildDate>Fri, 06 Mar 2026 13:34:06 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.7</generator>

<image>
	<url>https://dragongo.co/wp-content/uploads/2021/05/cropped-cropped-LOGO-2-e1655437907165-32x32.png</url>
	<title>註解的習慣 &#8211; 龍冥 Blog</title>
	<link>https://dragongo.co</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Python超入門教學】EP4 &#124; 判斷我說的話是不是真的? (if-elif-else)</title>
		<link>https://dragongo.co/python-beginner-if-elif-else-tutorial/</link>
					<comments>https://dragongo.co/python-beginner-if-elif-else-tutorial/#respond</comments>
		
		<dc:creator><![CDATA[龍冥]]></dc:creator>
		<pubDate>Fri, 06 Mar 2026 13:34:03 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[程式教學]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[註解]]></category>
		<category><![CDATA[註解的習慣]]></category>
		<guid isPermaLink="false">https://dragongo.co/?p=2634</guid>

					<description><![CDATA[本文說明程式註解在專案開發中的正確定位與使用原則，強調註解應用於說明複雜邏輯，而非取代除錯工具。作者分享從初學大量使用 print 與註解測試，到轉向專業開發流程的經驗，說明過度註解與臨時除錯碼會降低程式可維護性。文章建議透過 Git 管理測試歷程，並導入 Log 系統取代臨時輸出，同時介紹 Python 單行與多行註解的實務用法，協助開發者建立清晰、穩定且可長期維護的程式架構。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2634" class="elementor elementor-2634">
						<section class="penci-section penci-disSticky penci-structure-10 elementor-section elementor-top-section elementor-element elementor-element-052f0ea elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="052f0ea" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="penci-ercol-100 penci-ercol-order-1 penci-sticky-ct    elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f371213" data-id="f371213" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-92edea3 elementor-widget elementor-widget-text-editor" data-id="92edea3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>流程控制：條件判斷 (if / elif / else)</h2><p>透過程式讓電腦具有「思考」能力，能根據不同的情況執行不同的程式碼區塊。例如：當密碼正確時允許使用者登入；若密碼錯誤，則顯示錯誤訊息。</p><hr /><h2>給電腦的判斷句 (&gt;、&lt;、=)</h2><p>在撰寫 <code>if</code> 相關指令之前，必須先理解電腦如何判斷條件。</p><h3>「等於」不只是等於？搞懂 <code>=</code> 與 <code>==</code> 的差別</h3><p>在數學中，我們習慣使用 <code>=</code> 表示兩邊相等（雖然《鋼之鍊金術師》的等價交換也不是這樣寫的 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f606.png" alt="😆" class="wp-smiley" style="height: 1em; max-height: 1em;" />）。但在程式碼中，這兩個符號的意義完全不同：</p><ul><li><p><strong>單個等於 <code>=</code>（指定 Assignment）：</strong></p><p>可以想像成「把右邊的東西放進左邊的盒子」。</p><pre><code class="language-python">x = 10
</code></pre><p>代表：把數字 <code>10</code> 放進變數 <code>x</code> 這個盒子裡。</p></li><li><p><strong>兩個等於 <code>==</code>（比較 Comparison）：</strong></p><p>這是在「提出一個問題」。</p><pre><code class="language-python">x == 10
</code></pre><p>代表：<code>x</code> 裡面的值是否等於 <code>10</code>？</p><p>這個寫法通常會出現在 <code>if</code> 的條件判斷中，讓電腦檢查條件是否成立。</p></li></ul><hr /><h2>布林值 (Boolean)：只有是與否的世界</h2><p>當電腦判斷 <code>if</code> 後面的條件時，只會得到兩種結果：</p><ul><li><code>True</code>（真 / 條件成立）</li><li><code>False</code>（假 / 條件不成立）</li></ul><p>這種只有兩種結果的邏輯，在程式中稱為 <strong>布林值（Boolean）</strong>。</p><h3>為什麼 Boolean 很重要？</h3><p>因為 <code>if</code> 的運作邏輯非常單純：</p><ul><li>如果條件結果是 <strong>True</strong> → 執行縮排區塊內的程式</li><li>如果條件結果是 <strong>False</strong> → 直接跳過該區塊</li></ul><pre><code class="language-python">5 &gt; 3 結果：<code>True</code> </code></pre><pre><code class="language-python">10 &lt; 2 結果：<code>False</code></code></pre><pre><code class="language-python">num % 2 == 0 意思是：數字除以 2 的餘數是否等於 0？</code></pre><ul><li>如果 <code>num = 4</code> → <code>True</code>（偶數）</li><li>如果 <code>num = 5</code> → <code>False</code>（奇數）</li></ul><hr /><h2>if 的基礎寫法</h2><p>Python 使用 <strong>縮排（indentation）</strong> 來定義程式區塊。這與 C / Java 常見的大括號 <code>{}</code> 不同，而且縮排是 <strong>語法強制要求</strong>。</p><p>在多數編輯器中，可以先選取程式碼後：</p><ul><li><code>Tab</code> → 增加縮排</li><li><code>Shift + Tab</code> → 減少縮排</li></ul><h3>if / elif / else 基本結構</h3><pre><code class="language-python">if 條件1:
    符合條件1時執行
elif 條件2:
    條件1不成立，但條件2成立時執行
elif 條件3:
    條件1與條件2都不成立，但條件3成立時執行
else:
    以上條件都不成立時執行
</code></pre><hr /><h3>範例：判斷數字是正數、負數或零</h3><pre><code class="language-python">x = float(input("輸入一個數字: "))

if x &gt; 0:
    print("這是正數")
elif x &lt; 0:
    print("這是負數")
else:
    print("這是零")
</code></pre><p>程式流程：</p><ol><li>使用者輸入一個數字</li><li>如果 <code>x &gt; 0</code> → 顯示「這是正數」</li><li>如果 <code>x &lt; 0</code> → 顯示「這是負數」</li><li>其他情況 → 顯示「這是零」</li></ol><hr /><h2>巢狀條件（Nested if）</h2><p>Python 允許在 <code>if</code> 區塊內再撰寫另一層 <code>if</code>，形成 <strong>巢狀條件（Nested if）</strong>，用來處理更細緻的判斷邏輯。</p><h3>範例邏輯</h3><ol><li>先判斷數字是否大於 0</li><li>如果大於 0，再判斷它是奇數還是偶數</li><li>如果小於或等於 0，則不進行奇偶數判斷</li></ol><pre><code class="language-python">num = int(input("請輸入整數: "))

if num &gt; 0:
    print("大於 0")

    # 第二層判斷（巢狀 if）
    if num % 2 == 0:
        print("且是偶數")
    else:
        print("且是奇數")

else:
    print("小於或等於 0")
</code></pre><p>透過巢狀條件，可以讓程式逐層篩選條件，處理更複雜的邏輯情境。</p><p><!-- notionvc: f4b1cbbf-1b4c-48bb-86a6-8e9406a03023 --></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://dragongo.co/python-beginner-if-elif-else-tutorial/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python超入門教學】EP3 &#124; 註解又不會動，幹嘛打?</title>
		<link>https://dragongo.co/python-comments-and-debugging-best-practices/</link>
		
		<dc:creator><![CDATA[龍冥]]></dc:creator>
		<pubDate>Mon, 02 Feb 2026 11:16:11 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[程式教學]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[教學]]></category>
		<category><![CDATA[註解]]></category>
		<category><![CDATA[註解的習慣]]></category>
		<guid isPermaLink="false">https://dragongo.co/?p=2621</guid>

					<description><![CDATA[本文說明程式註解在專案開發中的正確定位與使用原則，強調註解應用於說明複雜邏輯，而非取代除錯工具。作者分享從初學大量使用 print 與註解測試，到轉向專業開發流程的經驗，說明過度註解與臨時除錯碼會降低程式可維護性。文章建議透過 Git 管理測試歷程，並導入 Log 系統取代臨時輸出，同時介紹 Python 單行與多行註解的實務用法，協助開發者建立清晰、穩定且可長期維護的程式架構。]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2621" class="elementor elementor-2621">
						<section class="penci-section penci-disSticky penci-structure-10 elementor-section elementor-top-section elementor-element elementor-element-052f0ea elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="052f0ea" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="penci-ercol-100 penci-ercol-order-1 penci-sticky-ct    elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f371213" data-id="f371213" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-92edea3 elementor-widget elementor-widget-text-editor" data-id="92edea3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2>註解 (Comments)</h2>
<p>註解是程式碼中不會被電腦執行的部分，核心目的是用來解釋程式邏輯或暫時讓某段程式失效。</p>
<p>註解的目的不是要讓初學者看懂你在幹嘛，而是用來提醒專家和你自己困難邏輯的部分在幹嘛，如果這個功能邏輯較為複雜，或有特殊考量時，就必須要在附近加上註解，但如果是很基礎簡單的部分，就不要再加上註解，否則會增加撰寫程式的時間。詳細的註解規則可參考Python專業社群的<a href="https://peps.python.org/pep-0008/" target="_blank" rel="noopener">PEP8</a>規範。</p>
<h3>單行註解</h3>
<ul>
<li><strong>符號</strong>：使用 <code>#</code>。</li>
<li><strong>功能</strong>：電腦會忽略 <code>#</code> 之後的該行文字。</li>
<li><strong>快捷鍵</strong>：在 Colab 或 VS Code 中，選取程式碼後按 <code>Ctrl</code> + <code>/</code> 可快速切換註解。</li>
</ul>
<h3>多行註解（區塊註解）</h3>
<ul>
<li>
<p><strong>符號</strong>：使用三個雙引號 <code>"""</code> 或三個單引號 <code>'''</code> 將文字包覆起來。</p>
</li>
<li>
<p><strong>功能</strong>：允許文字跨越多行，常當作「區塊註解」使用，或用於暫時停用一大段程式碼。</p>
</li>
<li>
<p><strong>技術細節</strong>：在 Python 的定義中，這其實是「多行字串 (Multi-line String)」。但如果這個字串<strong>沒有賦值給任何變數</strong>（即沒有寫 <code>text = ...</code>），Python 執行時會讀取它但不會做任何處理，效果等同於註解。</p>
</li>
<li>
<p><strong>範例</strong>：</p>
<pre><code>"""
這是一個多行註解的範例
你可以寫很多行
電腦都會略過不執行
"""
print("Hello")
</code></pre>
</li>
</ul>
<h2>在開發專案時，不要把註解當成debug的工具</h2>
<p>早期學習程式時，常把除錯當成主要工具：在迴圈中大量 print 資訊，或用快捷鍵反覆註解、取消註解測試程式碼，一邊修改一邊拼出最終版本。當程式規模還在五百行內時，這種方式尚可運作。</p>
<p>但隨著專案複雜度提高，開發週期拉長，多個專案同步進行，中途又可能因瓶頸或突發任務而中斷。幾個月後回頭看程式碼時，混雜其中的大量測試片段與除錯 print ，反而成了干擾理解的雜訊，使維護更加困難。</p>
<p>當註解與臨時測試累積到一定程度，就必須轉向更正規的開發模式。註解應回歸「提示」本質，而非暫時性的測試工具。</p>
<p>針對測試程式碼，建議透過 Git 管理開發歷程。當功能穩定後，可放心清除測試內容，需要時再從舊版本取用即可。至於複雜邏輯的追蹤，則應導入 Log 模組，統一使用 log.debug() 輸出資訊。封裝成執行檔時，只需調高顯示層級，即可隱藏除錯訊息，同時保留錯誤紀錄。</p>
<p>透過這樣的做法，能有效降低註解與臨時輸出的干擾，讓專案維持清晰且可維護的狀態。</p>
<h2>歪樓的部分</h2>
<p>我之前在寫code壓力大時，曾在我所有的code原始碼中，加入大量的圖像註解，一來是抒發壓力，二來是留一個趣味的東西給後人看，是看到<a href="https://www.dcard.tw/f/talk/p/238310528" target="_blank" rel="noopener">Dcard工程師的code</a>得到的靈感<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f923.png" alt="🤣" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><!-- notionvc: 5989e345-138a-4db1-be30-be21b217090b --></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
