Python 中的 Null:帶有代碼示例的 7 個用例

Python 中的 Null:帶有代碼示例的 7 個用例

在編程中,你可能會遇到變量沒有值的情況。這些實例通常由稱為 null 的特殊值表示。許多編程語言,例如 C、Java、JavaScript 和 PHP,都有內置的空值,但 Python 採用略微不同的方法來表示空變量。

在 Python 中,null 的等價物是 None。它是 Python 中的一個特殊常量,表示沒有值或空值。它是它自己的數據類型——NoneType的一個實例。它與 0、False 或空字符串不同,因為它是一種自身的數據類型,不代表任何值或任何對象。

Python 中的 Null:帶有代碼示例的 7 個用例

如果您正在學習 Python,理解 Python 中None的概念很重要。它為您提供了創建處理邊緣情況的高效代碼的方法。在探索 Python 編程時,您會遇到各種場景,其中 None 被證明是必不可少的。

在本文中,我們將探索 Python 中的 null 或 none 是什麼。我們將通過示例和用例來幫助您鞏固空值的概念。但首先,讓我們了解 Python 中 None 或 Null 值的概念。

目錄

Python 中的 Null 是什麼?

為了理解 Python 中的 null,您必須理解以下兩個概念:

  1. None 和 Null 之間的區別

  2. 無類型

1. None 和 Null 的區別

許多編程語言中的 Null 用於表示空指針或未知值。您可以在這些語言中將空值定義為 0。

但是,在 Python 中,您使用關鍵字 None 代替 null 來定義空對象和變量。None 與其他語言中的 null 有一些相同的用途。但它是一個獨特的實體,沒有定義為 0 或任何其他值。

2.無類型

在 Python 中,None 是一種獨特的數據結構,屬於 NoneType 類型。它是一等公民,這意味著您可以將其分配給變量。您也可以將其作為參數傳遞並作為結果返回。

當你給一個變量賦值 None 時,它就變成了一個 NoneType 對象。None 不等同於空字符串、布爾值 False 或數值 0。它只是表示空變量或什麼都沒有。

現在您了解了與 none 相關的術語,讓我們繼續看看如何將 None 用於不同的用例!

如何在 Python 中使用 None

在 Python 中,您可以將 None 用於許多用例。在本節中,我們將了解 Python 中 None 的 4 個重要用例。

Python 中的 Null:帶有代碼示例的 7 個用例

具體來說,我們將研究以下用例:

  1. 將 None 分配給變量

  2. 使用 None 作為默認參數

  3. 使用身份運算符檢查 None

  4. 處理缺失值

讓我們開始吧!

1. 不給變量賦值

您可以將 None 分配給變量以指示缺少值。

例如:

x = None

這裡的 None 表示 x 的值不存在或尚未確定有效值。

2. 使用 None 作為默認參數

您也可以使用 None 作為默認參數值來定義函數。當您希望在函數中允許默認參數的可選參數時,這很有用。

以下代碼向您展示瞭如何使用 None 作為默認參數:

def greet(name=None):
    if name is None:
        print("Hello, World!")
    else:
        print(f"Hello, {name}!")

# Call the function without providing a name
greet()

# Call the function with a name
greet("Alice")

當你運行這段代碼時,它會打印出“Hello, World!” 當您不帶任何參數調用 greet() 時。但是當你調用帶有參數的 greet() 時,比如 greet(“Alice”),它會打印“Hello, Alice!”。這允許該函數具有可選參數。

Python 中的 Null:帶有代碼示例的 7 個用例

3. 使用身份操作符檢查 None

您可以使用is身份運算符來檢查變量是否為 None。這允許您比較兩個變量是否引用同一個對象。

下面是一個例子,向您展示如何使用身份運算符:

# Define a variable with no value
var1 = None

# Define a variable with a value
var2 = "Hello, World!"

# Check if var1 is None
if var1 is None:
    print("var1 is None")
else:
    print("var1 is not None")

# Check if var2 is None
if var2 is None:
    print("var2 is None")
else:
    print("var2 is not None")

在此代碼中,var1 is None 將返回 True,因為 var1 被分配了值 None。另一方面,var2 is None 將返回 False,因為 var2 有一個字符串值。

腳本的輸出如下:

Python 中的 Null:帶有代碼示例的 7 個用例

4.處理缺失值

您可能還會遇到缺少值的數據。您可以用 None 表示這些缺失值並相應地處理它們。

以下是處理數字列表的示例:

# Define a list of data with some missing values
data = [1, 2, 3, None, 5, None, 7, 8, None, 10]

def calculate_average(data):
    # Filter out None values using list comprehension
    valid_data = [value for value in data if value is not None]

    # Calculate average if valid_data is not empty
    average = sum(valid_data) / len(valid_data) if valid_data else None

    return average

# Call the function and print the result
print(calculate_average(data))

函數計算列表中所有非 None 值的總和,並將其除以非 None 值的計數。如果列表中的所有值都是 None,則函數返回 None。

輸出如下:

Python 中的 Null:帶有代碼示例的 7 個用例

通過使用 None 和上面提到的不同技術,您可以有效地處理 Python 中的缺失值。

要了解有關在 Python 中處理缺失值的更多信息,請查看以下視頻:

None 在 Python 中的更多用例

除了上一節中討論的用例之外,還有一些其他 None 的用例。這些用例不是經常使用的,但在某些情況下很有用。

在本節中,我們將研究 Python 中 None 的以下 3 個用例:

  1. 在 return 語句中使用 None

  2. 使用 None 作為標誌

  3. 對自定義對象使用 None

讓我們深入研究吧!

1. 使用 None 作為返回語句

您可以在 return 語句中使用 None ,特別是當函數完成執行但未找到特定結果時。

例如,如果未找到該元素,則在列表中搜索元素的函數可以返回 None。以下代碼演示了使用 None 作為返回值:

# Define a list
numbers = [10, 20, 30, 40, 50]

def find_in_list(lst, target):
    for i, value in enumerate(lst):
        if value == target:
            return i
    return None

# Search for a number in the list
print(find_in_list(numbers, 30))  
print(find_in_list(numbers, 60))

在此代碼中,find_in_list函數迭代輸入列表lst。如果找到目標值,則返回該值的索引。如果在檢查整個列表後沒有找到目標值,則返回 None。

輸出如下:

Python 中的 Null:帶有代碼示例的 7 個用例

2. 使用 None 作為標誌

您還可以使用 None 作為標誌來指示變量的狀態。例如,您可以使用它來標記某個值是否未初始化或跟踪程序中的特殊情況。

以下是如何使用 None 作為標誌的示例:

def find_first_even_number(numbers):
    # Initialize the first_even_number to None
    first_even_number = None

    # Iterate over the list of numbers
    for number in numbers:
        # If we find an even number and first_even_number is still None
        if number % 2 == 0 and first_even_number is None:
            first_even_number = number
            break

    return first_even_number

numbers = [1, 3, 5, 7, 8, 10]

# Call the function and print the result
print(find_first_even_number(numbers))  # Outputs: 8

在這段代碼中,None 用作標誌,表示我們尚未在列表中找到偶數。

如果循環後first_even_number仍然是 None ,這意味著列表中沒有偶數。

如果first_even_number不是 None,它包含列表中的第一個偶數。

Python 中的 Null:帶有代碼示例的 7 個用例

3. 對自定義對象使用 None

您也可以將 None 用於自定義的、用戶定義的對象。在處理返回其他對象的屬性、特性或方法時,您可以使用 None 來表示不存在值或關係。

以下示例演示瞭如何將 None 用於用戶定義的對象:

class Person:
    def __init__(self, name):
        self.name = name
        self.best_friend = None

    def set_best_friend(self, person):
        self.best_friend = person

    def get_best_friend_name(self):
        if self.best_friend is not None:
            return self.best_friend.name
        else:
            return None

# Create two Person objects
alice = Person('Alice')
bob = Person('Bob')

# Alice's best friend is Bob
alice.set_best_friend(bob)

print(alice.get_best_friend_name())  

# Charlie doesn't have a best friend
charlie = Person('Charlie')

print(charlie.get_best_friend_name())  

在此示例中,None 用作Person 實例的best_friend屬性的默認值。get_best_friend_name方法返回最好的朋友的名字(如果有的話),如果沒有則返回 None

上面的代碼將輸出以下內容:

Python 中的 Null:帶有代碼示例的 7 個用例

空對象的特殊函數和技術

我們現在將討論一些您可以使用的與 NoneType 和處理空值相關的特殊函數和技術。我們將涵蓋兩個主要的子部分:

  1. Id 函數

  2. Getattr 函數

1.身份證功能

Python 中的 id() 函數是一個返回對象標識的內置函數。此身份是在其生命週期內分配給對象的唯一且恆定的整數。

這允許您區分具有不同內存地址的對象。該函數在處理 NoneType 對象時特別有用,因為它可用於檢查變量或表達式中是否存在 None。

以下是使用id()函數的示例:

a = None
b = None
c = 42

print(id(a))  # Output: some unique integer representing None
print(id(b))  # Output: same integer as id(a)
print(id(c))  # Output: different integer from id(a) and id(b)

此代碼的輸出如下所示:

Python 中的 Null:帶有代碼示例的 7 個用例

由於 None 在 Python 中是一等公民,它有自己獨特的身份。這意味著您可以使用id()函數使用變量的身份將變量與 None 進行比較:

if id(a) == id(None):
    print("a is None")

輸出如下:

Python 中的 Null:帶有代碼示例的 7 個用例

2.getattr函數

getattr ()函數是另一個內置的 Python 函數,它允許您按名稱訪問對象的屬性。

給定一個對象和一個字符串,getattr()返回命名屬性的值,如果該屬性不存在,則返回 None 對象。

這在處理空值時很有用,尤其是在您需要訪問可能缺失的屬性的情況下。

以下是使用getattr()函數的示例:

class ExampleClass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

example_obj = ExampleClass(3, 4)

# Access attribute using getattr
print(getattr(example_obj, "x"))  # Output: 3
print(getattr(example_obj, "z", None))  # Output: None

在上面的示例中,我們使用getattr()來訪問 x 屬性並嘗試訪問不存在的 z 屬性。

通過提供默認值 None,我們可以防止 AttributeError 並接收 None 對象。

因此,即使存在空對像或缺少屬性,此函數也允許安全訪問屬性。

此代碼的輸出如下所示:

Python 中的 Null:帶有代碼示例的 7 個用例

比較其他編程語言中的 Null

在本文的開頭,我們對 Python 中的 Null 和其他編程語言中的 Null 進行了簡短的比較。

在本節中,我們將繼續這個主題並將其他流行編程語言中的 Null 與 Python 中的 Null 進行比較。如果您來自不同的編程背景,這將幫助您更好地理解 Python 中 None 的概念。

讓我們開始吧!

1.Java中的空值

在 Java 中,“null”關鍵字表示不指向任何對像或值的引用。它用於指示值的缺失,通常用作對象引用的默認值。

例如:

String myString = null; // Declare a String object with a null reference

Java 的 null 不同於 Python 的 None。Null 表示缺少對象,而 None 是 NoneType 的實際對象。

2. C 中的空值

在C編程語言中,null用空指針表示,表示未初始化或空指針。空指針通常由整數值 0 表示。

下面是在 C 中使用空指針的例子:

int *myPointer = NULL; // Declare an integer pointer with a null reference

C 中的 Null 不與特定數據類型相關聯。它用作未初始化或空指針的佔位符。

3. PHP 中的空值

在 PHP 中,null 表示沒有值或沒有引用的變量。與其他語言一樣,null 用於表示未初始化或空變量。

下面是 PHP 中 Null 的一個例子:

$myVar = NULL; // Declare a variable with a null reference

PHP 的 null 不是特定數據類型的對象,而是一個特殊的常量,表示沒有值。

最後的想法

在您作為 Python 程序員的旅程中,了解 None 值非常重要。這是一個獨特的功能,作為 Python 表達“這裡什麼都沒有”的方式。

它對於表示值的缺失是必不可少的。通過理解並正確使用 None,您可以創建更靈活的帶有可選參數的函數並有效地處理丟失的數據。

此外,None 值允許您的函數在缺少某些內容或未滿足條件時清晰地傳達信息。此外,在處理數據庫、用戶定義對像或需要初始化變量時,理解 None 是至關重要的。

本指南介紹了 Python 中的 None 值,演示了一些您希望在代碼中使用 None 對象的重要場景。


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的