使用者工具

網站工具


python_study

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
python_study [2024/04/15 10:22]
don
python_study [2024/04/15 10:53] (目前版本)
don
行 3: 行 3:
  
  
 +
 +==== 直接執行時與被引用的判斷機制 ====
 +
 +你就可以看到 __name__ 的值在檔案被直接執行時與被引用時是不同的。
 +所以回到上面的問題:要怎麼讓檔案在被引用時,不該執行的程式碼不被執行?
 +當然就是靠 <code>__name__ == '__main__' </code>做判斷!
 +<code>
 +# cool.py
 +
 +defcool_func():
 +    print('cool_func(): Super Cool!')
 +
 +if__name__=='__main__':
 +    print('Call it locally')
 +    cool_func()
 +</code>
  
 * 註解符號為 # * 註解符號為 #
行 37: 行 53:
 print(rand_num()) print(rand_num())
 print(sqrt_num(9)) print(sqrt_num(9))
 +
 </code> </code>
  
 <code> <code>
-程式的最小執行單位為敘句(statement),同等於文章的句子\\+程式的最小執行單位為敘句(statement),同等於文章的句子
 運算式述句~ 算數運算子:+, -, *, /, %, //, **  運算式述句~ 算數運算子:+, -, *, /, %, //, ** 
-比較運算子: >, <, ==, !=, >=,<=\\ +比較運算子: >, <, ==, !=, >=,<
-布林邏輯運算子: and, or, not\\ +布林邏輯運算子: and, or, not 
-指派述句~ 使用" = "作變數指派\\ +指派述句~ 使用" = "作變數指派 
-輸出:print()\\ +輸出:print() 
-輸入: input()\\ +輸入: input() 
-條件判斷述句~ if , if....else, if...elif....elif...elif...else, while\\ +條件判斷述句~ if , if....else, if...elif....elif...elif...else, while 
-迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈\\ +迴圈述句~ for ....in...., while, 使用break , continue 控制迴圈 
-述句中的物件~整數(integer), 浮點(float), 字串(string),元組(tuple),清單(list),字典(dictionary)\\ +述句中的物件~整數(integer), 浮點(float), 字串(string),元組(tuple),清單(list),字典(dictionary) 
-</cdoe>+</code>
  
 程式的三種控制結構\\ 程式的三種控制結構\\
行 93: 行 110:
 python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下: python的二分支結構使用if-else保留字對條件進行判斷,語法格式如下:
    
- if <條件>:+if <條件>:
     <語句塊1>     <語句塊1>
 else: else:
     <語句塊2>     <語句塊2>
 +    
 <語句塊1>在if<條件>中滿足即為True時執行,<語句塊2>在if<條件>中不滿足即為False時執行,簡單來說,二分支結構根據條件True或False結果產生兩條路徑。 <語句塊1>在if<條件>中滿足即為True時執行,<語句塊2>在if<條件>中不滿足即為False時執行,簡單來說,二分支結構根據條件True或False結果產生兩條路徑。
 例如: 例如:
行 161: 行 179:
 遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。 遍歷迴圈可以理解為從遍歷結構中逐一提取元素,放在迴圈變數中,對於每個所提取的元素執行一次語句塊。
  
 +<code>
 for <迴圈變數> in <遍歷結構>: for <迴圈變數> in <遍歷結構>:
  <語句塊>  <語句塊>
 +</code>
 例如: 例如:
  
行 238: 行 258:
 當程式執行到while語句時,判斷條件如果為True,執行迴圈體語句,語句結束後返回再次判斷while語句的條件,當條件為False時,迴圈終止,執行與while同級別縮排的後續語句。 當程式執行到while語句時,判斷條件如果為True,執行迴圈體語句,語句結束後返回再次判斷while語句的條件,當條件為False時,迴圈終止,執行與while同級別縮排的後續語句。
 無限迴圈也有一種使用保留字else的擴充套件模式: 無限迴圈也有一種使用保留字else的擴充套件模式:
 +<code>
 while <條件>: while <條件>:
  <語句塊1>  <語句塊1>
 else: else:
  <語句塊2>  <語句塊2>
 +</code>
 迴圈控制有兩個輔助迴圈控制的保留字:break和continue 迴圈控制有兩個輔助迴圈控制的保留字:break和continue
 break用來跳出最內層for或while迴圈,脫離該迴圈後程式繼續執行迴圈後續程式碼。 break用來跳出最內層for或while迴圈,脫離該迴圈後程式繼續執行迴圈後續程式碼。
行 341: 行 362:
 縮排、縮排、縮排 縮排、縮排、縮排
 Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像 Python 程式語言的一個最大的特色就是以縮排定義程式結構。不像 C, C++, Java 等語言用括號定義程式區塊 (類別、函式、條件判斷和迴圈等),在 Python 裡,行首的「空白字元個數」 (即縮排) 就定義了區塊結構。許多會寫像
-int main(){ +<code> 
-    int i;+int main() 
 +
 +  int i;
   double d;   double d;
-      d = 1.d0; +  d = 1.d0; 
-        i = 2;+  i = 2;
 } }
 +</code>
 這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。 這種程式的人一開始會非常不習慣這種作法;但所有程式設計的書都會告訴你程式碼應該要排整齊,亂排只會增加往後維護的困難度而已。Python 強迫程式員把程式寫得漂亮,這不單簡化了往後的維護工作,更去掉了程式裡那些擾人的括號,對減少程式碼長度來說效果良好。
  
 註記 註記
 適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。 適當地縮短程式碼的行數絕對是好事。一個函式能在一頁裡列完,就能比兩三頁長的函式更易讀易懂,也更不容易寫錯。
 +<code>
 在 Python 裡, 在 Python 裡,
 print "Hi" print "Hi"
行 364: 行 389:
     print "1 == 1, of course"     print "1 == 1, of course"
 這樣才對。 這樣才對。
 +</code>
 至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\ 至於一次縮排要縮多少個字元,Python 並沒有進行限制,甚至不同的段落空白不一樣長也可以;\\
 只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\ 只要同一個區塊的行首空白數相同即可。然而經驗告訴我們,\\
python_study.1713147732.txt.gz · 上一次變更: 2024/04/15 10:22 由 don