iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Security

【Google資安證書課程重點整理】系列 第 26

【Google資安證書重點整理】Day 26_Python常用的指令

  • 分享至 

  • xImage
  •  

導讀

https://ithelp.ithome.com.tw/upload/images/20240927/200265857y6aeZPxol.png

於上一篇作了很基礎的python內容介紹,接下來將作一些關於python應用的語法,讓整個流程能自動化執行。

Python 在網路安全中的作用

1. 函數在網路安全中的應用

  • 函數:可重複使用的一段程式碼,在 Python 中非常重要,能夠自動執行程式碼中的重複部分。
  • 範例
    • 在處理安全性日誌時,可以使用函數來自動篩選多個日誌中的潛在惡意登入活動。

2. 定義函數

內建函數

  • 內建函數:已存在於 Python 中,可以直接呼叫使用。
    • 範例:print() 是內建函數。

使用者定義函數

  • 使用者定義函數:程式設計師根據需求自定義的函數。需包含函數頭函數體

函數頭

  • 定義方法:使用 def 關鍵字,後接函數名稱。
    • 範例:
      def display_investigation_message():
      
  • 函數名稱後必須加上括號 () 和冒號 :

函數體

  • 定義函數功能的區塊,需縮排。
    • 範例:
      def display_investigation_message():
          print("調查活動")
      

3. 呼叫函數

  • 定義後可以在程式中多次呼叫該函數。
    • 範例:
      display_investigation_message()
      
  • 函數呼叫示例:
    def display_investigation_message():
        print("investigate activity")
    
    application_status = "potential concern"
    email_status = "okay"
    
    if application_status == "potential concern":
        print("application_log:")
        display_investigation_message()
    
    if email_status == "potential concern":
        print("email log:")
        display_investigation_message()
    
    • 執行結果:
      application_log:
      investigate activity
      

4. 函數的重複使用

  • 函數可以多次呼叫,例如在不同條件下執行相同的操作。
  • 注意:避免在函數內呼叫自身,否則可能會導致無限迴圈

無限迴圈示例:

def func1():
    func1()  # 會導致無限迴圈 

函數和變數

1. 使用函數中的變數

  • 參數:在函數定義中用作計算的變數。

    • 範例:
      def remaining_login_attempts(maximum_attempts, total_attempts):
          print(maximum_attempts - total_attempts)
      
    • maximum_attemptstotal_attempts 是參數。
  • 實參:在呼叫函數時,傳入函數的資料。

    • 範例:
      remaining_login_attempts(3, 2)  # 3 和 2 是實參
      
  • return 語句:用於從函數中返回值。

    • 範例:
      def remaining_login_attempts(maximum_attempts, total_attempts):
          return maximum_attempts - total_attempts
      

2. 全域變數和局部變數

全域變數

  • 定義:全域變數是在程式中任何地方都可存取的變數,定義在函數外。
    • 範例:
      device_id = "7ad2130bd"  # 全域變數
      

局部變數

  • 定義:局部變數是在函數內部分配的變數,無法在函數外存取。
    • 範例:
      def greet_employee(name):
          total_string = "歡迎 " + name  # 局部變數
          return total_string
      

3. 全域變數和局部變數的最佳實踐

  • 避免混用:在函數內避免使用與全域變數相同名稱的局部變數,因為這會導致值混淆。
    • 範例:
      username = "elarson"  # 全域變數
      def greet():
          username = "bmoreno"  # 局部變數
          print("2: " + username)
      greet()
      print("3: " + username)  # 仍然是全域變數的值
      

4. 重點整理

  • 參數:定義在函數內,供函數計算使用的變數。
  • 實參:呼叫函數時傳入的資料。
  • return 語句:從函數返回資訊,方便在其他地方使用。
  • 全域變數:整個程式可存取的變數,定義在函數外。
  • 局部變數:只在函數內使用的變數,不可在函數外存取。
  • 命名規範:確保局部變數與全域變數的名稱不同,避免混淆。

使用內建函數

1. print() 函數

  • 功能:將指定的物件輸出到螢幕,是 Python 中最常用的函數之一。
  • 用法:接受任意數量的參數,以逗號分隔,並列印所有這些參數。
    • 範例:
      month = "September"
      print("Investigate failed login attempts during", month, "if more than", 100)
      

2. type() 函數

  • 功能:傳回其參數的資料類型,用來追蹤變數類型,避免錯誤。
  • 用法:接受一個參數,並傳回其資料類型。
    • 範例:
      print(type("security"))
      print(type(7))
      

3. 將一個函數的輸出傳遞給另一個函數

  • 可以將函數的輸出作為參數傳遞給另一個函數。
    • 範例:
      print(type("This is a string"))
      
    • 輸出:
      <class 'str'>
      

4. max()min() 函數

  • 功能max() 傳回輸入中的最大值,min() 傳回輸入中的最小值。
  • 用法:接受多個數值或可迭代物件(如列表)並傳回相應的最大或最小值。
    • 範例:
      time_list = [12, 2, 32, 19, 57, 22, 14]
      print(min(time_list))  # 傳回 2
      print(max(time_list))  # 傳回 57
      

5. sorted() 函數

  • 功能:將可迭代物件(如列表)中的元素按升序排列,並傳回排序後的結果。
  • 用法:不會更改原始列表,而是傳回排序後的新列表。
    • 範例:
      time_list = [12, 2, 32, 19, 57, 22, 14]
      print(sorted(time_list))  # 傳回 [2, 12, 14, 19, 22, 32, 57]
      print(time_list)          # 原始列表未改變
      

注意事項:

  • sorted() 函數不能處理包含多種資料類型的列表(例如 [1, 2, "hello"])。

6. 重點整理

  • 內建函數:Python 中的強大工具,能夠簡化常見任務:
    • print():將參數列印到螢幕。
    • type():傳回參數的資料類型。
    • min()max():分別傳回可迭代物件的最小和最大值。
    • sorted():對可迭代物件的元素進行排序,並傳回排序後的結果。

7. 了解更多資訊的資源

在 Python 中導入模組和函式庫

1. Python 標準函式庫

  • Python 標準庫:包含大量模組,通常隨 Python 一起打包。
    • 常見模組包括:
      • re:用於搜尋模式。
      • csv:處理 .csv 檔案。
      • globos:與命令列互動。
      • timedatetime:處理時間戳記。
      • statistics:進行統計計算,如 mean()median() 函數。

2. 如何從 Python 標準庫導入模組

導入整個模組

  • 使用 import:導入整個模組後,可以使用該模組內的所有函數。
    • 範例:
      import statistics
      
      monthly_failed_attempts = [20, 17, 178, 33, 15, 21, 19, 29, 32, 15, 25, 19]
      mean_failed_attempts = statistics.mean(monthly_failed_attempts)
      print("mean:", mean_failed_attempts)
      

導入特定函數

  • 使用 from...import:僅導入模組中的特定函數後,無需指定模組名稱即可直接呼叫函數。
    • 範例:
      from statistics import mean, median
      
      monthly_failed_attempts = [20, 17, 178, 33, 15, 21, 19, 29, 32, 15, 25, 19]
      mean_failed_attempts = mean(monthly_failed_attempts)
      median_failed_attempts = median(monthly_failed_attempts)
      
      print("mean:", mean_failed_attempts)
      print("median:", median_failed_attempts)
      

3. 外部函式庫

  • 外部函式庫:需要先安裝才能使用。
    • 範例:使用 %pip install 安裝庫。
      %pip install numpy
      
    • 安裝後即可使用 import 導入:
      import numpy
      

4. 重點整理

  • Python 標準函式庫 提供多種可匯入模組,例如 recsvosglobtimedatetimestatistics
  • 導入模組的方法
    • 使用 import 導入整個模組。
    • 使用 from...import 導入特定函數。
  • 外部函式庫:需要先安裝再匯入,例如 numpyBeautifulSoup 等。

確保 Python 中正確的語法和可讀性

1. 註釋 (Comments)

  • 註釋:用於解釋程式碼背後的意圖,幫助程式設計師閱讀和理解程式碼。
    • 單行註解:使用 # 開頭,適合簡單註解。
      • 範例:
        # 列印「computer_assets」清單的元素
        computer_assets = ["laptop1", "desktop20", "smartphone03"]
        for asset in computer_assets:
            print(asset)
        
    • 多行註解:使用多個 # 或使用三重引號 """
      • 範例:
        """
        remaining_login_attempts() 函數有兩個整數參數,
        傳回剩餘登入嘗試次數
        """
        

2. 縮排 (Indentation)

  • 正確的縮排:Python 程式碼必須正確縮排,通常為 4 個空格。
    • 範例:
      count = 0
      login_status = True
      while login_status == True:
          print("再試一次。")
          count = count + 1
          if count == 4:
              login_status = False
      

3. 保持正確的語法 (Correct Syntax)

  • 語法錯誤:常見於資料類型錯誤、條件或迭代語句中的標題錯誤。
    • 資料類型的正確使用
      • 字串用引號包住。
        • 範例:username = "bmoreno"
      • 整數、浮點數和布林值不需要引號。
        • 範例:login_attempts = 5
      • 清單放在方括號中,用逗號分隔元素。
        • 範例:username_list = ["bmoreno", "tshah"]
    • 條件語句或函數定義的冒號
      • 在條件或函數標題的結尾加冒號。
        • 範例:
          def remaining_login_attempts(max_attempts, total_attempts):
              return max_attempts - total_attempts
          

4. 重點整理

  • PEP 8 風格指南:提供撰寫易於理解和閱讀的 Python 程式碼的建議。
    • 註釋:清晰的單行或多行註解能提高程式碼的可讀性。
    • 縮排:確保程式碼正確運行,並且更易閱讀。
    • 語法錯誤:了解並修正常見的語法問題,如資料類型錯誤或條件語句中的標題錯誤。

5. 了解更多資訊的資源


上一篇
【Google資安證書重點整理】Day 25_Python基礎觀念
下一篇
【Google資安證書重點整理】Day 27_Python常用的指令二
系列文
【Google資安證書課程重點整理】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言