Python布爾類型與其他類型的轉(zhuǎn)換規(guī)則
在Python編程中,布爾類型(bool)作為最基礎(chǔ)的數(shù)據(jù)類型之一,扮演著邏輯判斷的核心角色。但你是否真正理解布爾值與其他類型之間的轉(zhuǎn)換規(guī)則?為什么bool([])返回False,而bool([0])卻返回True?為什么True + 2等于3?本文將深入探討Python中布爾類型與其他類型的轉(zhuǎn)換規(guī)則,涵蓋從基礎(chǔ)概念到高級技巧的完整知識體系,幫助你徹底掌握這一關(guān)鍵主題。
布爾類型的基礎(chǔ)認知
Python中的布爾類型是bool類的實例,僅有兩個可能的值:True和False。它們是Python內(nèi)置的常量,屬于關(guān)鍵字,首字母必須大寫。與許多其他編程語言不同,Python的布爾類型實際上是整數(shù)類型的子類,這帶來了獨特的轉(zhuǎn)換特性。
print(type(True)) # <class 'bool'> print(type(False)) # <class 'bool'> print(issubclass(bool, int)) # True print(True == 1) # True print(False == 0) # True
這段代碼揭示了關(guān)鍵事實:True在數(shù)值上等同于1,False等同于0。這是理解后續(xù)轉(zhuǎn)換規(guī)則的基礎(chǔ)。Python官方文檔在布爾類型的說明中明確指出,布爾類型是整數(shù)類型的子類,這種設(shè)計使得布爾值可以無縫參與數(shù)值運算。
布爾值的本質(zhì)特性
- 不可變性:布爾值是不可變對象,無法修改其值
- 單例模式:Python中只有兩個布爾實例(
True和False) - 數(shù)值等價性:
True數(shù)值上等于1,False等于0 - 子類關(guān)系:
bool是int的子類,但int不是bool的子類
print(id(True)) # 內(nèi)存地址(所有True引用同一對象) print(id(False)) # 內(nèi)存地址(所有False引用同一對象) print(True is 1) # False(雖然值相等,但不是同一對象) print(False is 0) # False
注意:雖然True == 1為True,但True is 1為False,這是因為is檢查對象身份(內(nèi)存地址),而==檢查值相等性。這種區(qū)別在理解類型轉(zhuǎn)換時至關(guān)重要。
真值測試:從其他類型到布爾的轉(zhuǎn)換
Python中的"真值測試"(Truth Value Testing)是指將任意對象轉(zhuǎn)換為布爾值的過程。這是Python條件判斷的核心機制,理解它能避免大量邏輯錯誤。根據(jù)Python官方文檔,任何對象在布爾上下文中都有一個真值,可通過內(nèi)置函數(shù)bool()顯式獲取。
真值測試的決策流程
下面的Mermaid流程圖清晰展示了Python如何確定一個對象的布爾值:
渲染錯誤: Mermaid 渲染失敗: Parse error on line 11: ...} H -->|是| I{len()==0?} I -->|是| ----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PS'
這個流程圖揭示了Python確定對象真值的完整邏輯鏈條。讓我們深入分析各類數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則。
基本數(shù)值類型的轉(zhuǎn)換規(guī)則
整數(shù)與浮點數(shù)
# 整數(shù)轉(zhuǎn)換
print(bool(0)) # False
print(bool(1)) # True
print(bool(-5)) # True
print(bool(0x00)) # False(十六進制0)
# 浮點數(shù)轉(zhuǎn)換
print(bool(0.0)) # False
print(bool(-0.0)) # False(負零也是False)
print(bool(0.0001)) # True
print(bool(float('nan'))) # True(NaN是True!)
print(bool(float('inf'))) # True
關(guān)鍵點:
- 所有數(shù)值類型的
0(包括0.0、-0.0)都為False NaN(非數(shù)字)在布爾上下文中為True,這與許多人的直覺相反- 任何非零數(shù)值(無論正負、整數(shù)或浮點)都為
True
復(fù)數(shù)
print(bool(0j)) # False(零復(fù)數(shù)) print(bool(1+0j)) # True print(bool(0+1j)) # True print(bool(-1-1j)) # True
復(fù)數(shù)的真值取決于實部和虛部是否同時為零。只有0+0j為False,其他所有復(fù)數(shù)均為True。
容器類型的轉(zhuǎn)換規(guī)則
容器類型(如列表、字典、元組等)的布爾值取決于其是否為空。
列表與元組
print(bool([])) # False(空列表) print(bool([0])) # True(非空列表,即使元素是0) print(bool([None])) # True print(bool([False]))# True print(bool(())) # False(空元組) print(bool((0,))) # True(單元素元組) print(bool((False,))) # True
重要提示:容器的真值僅取決于其長度是否為0,與內(nèi)部元素無關(guān)。即使列表包含0、None或False,只要不為空,就是True。
字典與集合
print(bool({})) # False(空字典)
print(bool({'key':0})) # True(非空字典)
print(bool({0: None})) # True
print(bool(set())) # False(空集合)
print(bool({0})) # True(包含一個元素的集合)
print(bool({False})) # True
字典和集合遵循相同規(guī)則:空容器為False,非空為True。注意集合不能用{}創(chuàng)建空集合(那是字典),必須用set()。
字符串與字節(jié)串
print(bool('')) # False(空字符串)
print(bool(' ')) # True(包含空格)
print(bool('\n')) # True(換行符)
print(bool('0')) # True(字符'0'非空)
print(bool('False'))# True
print(bool(b'')) # False(空字節(jié)串)
print(bool(b'0')) # True
常見誤區(qū):許多初學者認為字符串'0'或'False'應(yīng)為False,但Python只檢查字符串是否為空,不解析其內(nèi)容。
特殊對象的轉(zhuǎn)換規(guī)則
None類型
print(bool(None)) # False print(None == False) # False(類型不同,不能直接比較)
None是Python中的空值表示,其布爾值恒為False,但None不等于False,因為它們是不同類型。
函數(shù)與類
def func(): pass class MyClass: pass print(bool(func)) # True print(bool(MyClass)) # True
所有函數(shù)、類和方法對象在布爾上下文中均為True,因為它們是非空對象。
迭代器與生成器
print(bool(iter([]))) # True(空迭代器對象本身非空) print(bool(range(0))) # False(空range對象) gen = (x for x in []) print(bool(gen)) # True(生成器對象本身非空)
迭代器對象本身總是True,但空range對象為False,因為range是序列類型。
自定義對象的真值測試
對于自定義類實例,Python按以下順序確定其布爾值:
- 如果類定義了
__bool__()方法,調(diào)用它 - 否則,如果定義了
__len__()方法,檢查len(obj) == 0 - 否則,返回
True
# 示例1:僅定義__len__
class Team:
def __init__(self, members):
self.members = members
def __len__(self):
return len(self.members)
team1 = Team([])
team2 = Team(['Alice', 'Bob'])
print(bool(team1)) # False(空團隊)
print(bool(team2)) # True
# 示例2:定義__bool__
class LightSwitch:
def __init__(self, state):
self.state = state
def __bool__(self):
return self.state
switch_off = LightSwitch(False)
switch_on = LightSwitch(True)
print(bool(switch_off)) # False
print(bool(switch_on)) # True
# 示例3:同時定義__bool__和__len__
class SmartContainer:
def __bool__(self):
return False # 優(yōu)先使用__bool__
def __len__(self):
return 10
print(bool(SmartContainer())) # False(__bool__優(yōu)先)
最佳實踐:當需要自定義對象的真值行為時,應(yīng)明確定義__bool__方法,而不是依賴__len__,這樣邏輯更清晰。
布爾值向其他類型的轉(zhuǎn)換
理解如何將其他類型轉(zhuǎn)換為布爾值只是問題的一半。在實際編程中,我們經(jīng)常需要將布爾值轉(zhuǎn)換為其他類型,例如在數(shù)值計算或字符串處理中。
布爾值轉(zhuǎn)整數(shù)與浮點數(shù)
由于bool是int的子類,轉(zhuǎn)換非常直接:
print(int(True)) # 1 print(int(False)) # 0 print(float(True)) # 1.0 print(float(False))# 0.0 # 數(shù)值運算中的隱式轉(zhuǎn)換 print(True + 5) # 6 print(False * 10) # 0 print(True ** 2) # 1 print(False / 1) # 0.0(注意:在Python 3中,除法結(jié)果總是浮點數(shù)) # 位運算 print(True & 1) # 1(按位與) print(False | 1) # 1(按位或)
關(guān)鍵洞察:在數(shù)值上下文中,布爾值會自動轉(zhuǎn)換為1或0。這種特性在計數(shù)操作中非常有用:
# 統(tǒng)計列表中滿足條件的元素數(shù)量 numbers = [1, -2, 3, -4, 5] positive_count = sum(x > 0 for x in numbers) # 生成布爾值迭代器,自動轉(zhuǎn)為0/1 print(positive_count) # 3
布爾值轉(zhuǎn)字符串
print(str(True)) # 'True'
print(str(False)) # 'False'
print(repr(True)) # 'True'(與str相同,因為bool是內(nèi)置類型)
# 格式化字符串
print(f"Result: {True}") # 'Result: True'
print("Value is %s" % False) # 'Value is False'
# 自定義字符串表示
def bool_to_chinese(b):
return "是" if b else "否"
print(bool_to_chinese(True)) # '是'
print(bool_to_chinese(False)) # '否'
注意:str(True)返回的是英文字符串'True',不是本地化文本。如需本地化,應(yīng)使用自定義函數(shù)。
布爾值轉(zhuǎn)容器類型
雖然不常見,但布爾值可以轉(zhuǎn)換為某些容器類型:
print(list(True)) # TypeError: 'bool' object is not iterable
print(tuple(False)) # 同樣報錯
# 但可以作為元素放入容器
print([True, False]) # [True, False]
print((True,)) # (True,)
# 轉(zhuǎn)換為字典(非常規(guī)用法)
print(dict.fromkeys([True, False], 'value'))
# {True: 'value', False: 'value'}
# 布爾值作為鍵的特殊性
d = {True: 'yes', 1: 'one', 1.0: 'float_one'}
print(d) # {True: 'float_one'}(所有鍵被視為相等)
重要警告:由于True == 1 == 1.0為True,在字典中使用布爾值和數(shù)值作為鍵會導致沖突,因為它們在哈希比較中被視為相同。
布爾值在數(shù)值上下文中的高級應(yīng)用
布爾值的數(shù)值特性在高級編程技巧中非常有用:
# 條件賦值 x = 5 sign = (x > 0) - (x < 0) # 正數(shù)→1, 負數(shù)→-1, 零→0 print(sign) # 1 # 二進制標志位 flags = 0b0000 flags |= (True << 2) # 設(shè)置第2位(從0開始) flags |= (False << 1) # 第1位保持0 print(bin(flags)) # '0b100' # 向量化計算(NumPy示例) import numpy as np arr = np.array([1, 2, 3, 4]) mask = arr > 2 print(mask) # [False False True True] print(arr * mask) # [0 0 3 4](布爾數(shù)組自動轉(zhuǎn)為0/1)
NumPy等科學計算庫充分利用了布爾值的數(shù)值特性,使數(shù)組操作更加高效。
真實世界中的轉(zhuǎn)換陷阱與最佳實踐
理解理論規(guī)則只是第一步,實際編程中會遇到各種微妙情況。本節(jié)將分析常見陷阱并提供解決方案。
陷阱1:空格字符串與零值字符串
user_input = " "
if user_input:
print("Input received") # 會執(zhí)行!因為空格字符串非空
else:
print("No input")
# 正確做法:去除空白后檢查
if user_input.strip():
print("Valid input")
else:
print("Empty input")
解決方案:對于用戶輸入,應(yīng)使用.strip()去除空白后再判斷。
陷阱2:數(shù)值比較中的隱式轉(zhuǎn)換
print(0 == False) # True
print(1 == True) # True
print([] == False) # False(類型不同)
# 危險代碼:依賴數(shù)值等價性
def is_positive(n):
return n > 0
print(is_positive(True)) # True(因為True=1>0)
print(is_positive(1)) # True
問題:函數(shù)is_positive意外地接受布爾值作為輸入,可能導致邏輯錯誤。
最佳實踐:使用類型檢查確保輸入正確:
def is_positive(n):
if not isinstance(n, (int, float)):
raise TypeError("Expected numeric value")
return n > 0
陷阱3:空容器與"假"元素的混淆
data = [0, False, None, '']
if data:
print("Data is present") # 會執(zhí)行!因為列表非空
else:
print("No data")
# 檢查是否有"真實"數(shù)據(jù)
if any(data):
print("Has truthy values")
else:
print("All values are falsy") # 此情況會執(zhí)行
解決方案:使用any()檢查是否存在真值元素,all()檢查是否所有元素為真值。
陷阱4:浮點數(shù)精度問題
x = 0.1 + 0.2 print(x) # 0.30000000000000004 print(bool(x)) # True(非零) print(bool(x - 0.3)) # True(但非常接近零) # 安全比較 epsilon = 1e-10 print(abs(x - 0.3) < epsilon) # True(應(yīng)使用這種方式比較)
最佳實踐:浮點數(shù)比較應(yīng)使用容差值(epsilon),而非直接判斷是否為零。
陷阱5:自定義類的意外行為
class User:
def __init__(self, name, is_active):
self.name = name
self.is_active = is_active
# 錯誤:未定義__bool__,依賴__len__
def __len__(self):
return 1 # 總是非零
user = User("Alice", False)
if user:
print("User exists") # 總是執(zhí)行,即使is_active為False
問題:__len__返回1使對象始終為True,無法反映is_active狀態(tài)。
解決方案:明確定義__bool__:
class User:
def __bool__(self):
return self.is_active # 直接反映活躍狀態(tài)
user = User("Alice", False)
if user:
print("Active user")
else:
print("Inactive user") # 正確輸出
最佳實踐總結(jié)
明確意圖:在關(guān)鍵邏輯中,使用顯式比較而非依賴隱式轉(zhuǎn)換
# 避免 if user_data: # 推薦 if user_data is not None and len(user_data) > 0:
類型安全:對函數(shù)輸入進行類型驗證
def process(items):
if not isinstance(items, list):
raise TypeError("Expected list")
自定義類:為需要真值測試的類明確定義__bool__
class File:
def __bool__(self):
return self.size > 0
用戶輸入:處理前進行清理和驗證
input_text = user_input.strip()
if not input_text:
# 處理空輸入
浮點數(shù):使用容差比較而非直接判斷零值
if abs(value) < 1e-10:
# 視為零
高級主題:布爾邏輯與類型轉(zhuǎn)換的深度應(yīng)用
掌握基礎(chǔ)轉(zhuǎn)換規(guī)則后,我們可以探索更高級的應(yīng)用場景,充分發(fā)揮Python的靈活性。
布爾短路求值與條件執(zhí)行
Python的and和or運算符利用真值測試實現(xiàn)短路求值,這可以用于條件執(zhí)行:
# 安全訪問嵌套屬性
user = {"profile": {"name": "Alice"}}
name = user.get("profile", {}).get("name", "Guest")
print(name) # 'Alice'
# 利用短路求值
name = user.get("profile") and user["profile"].get("name") or "Guest"
# 等價但更簡潔
# 條件函數(shù)調(diào)用
debug = False
debug and print("Debug info") # 僅當debug為True時執(zhí)行
# 默認值設(shè)置
value = input_value or default_value # input_value為falsy時使用默認值
注意:or返回第一個真值操作數(shù),不一定是布爾值:
print(0 or "default") # 'default' print([] or [1, 2]) # [1, 2] print(None or "hello") # 'hello'
布爾掩碼在數(shù)據(jù)處理中的應(yīng)用
在數(shù)據(jù)分析中,布爾掩碼(Boolean Masking)是高效篩選數(shù)據(jù)的關(guān)鍵技術(shù):
import pandas as pd
import numpy as np
# 創(chuàng)建示例數(shù)據(jù)集
data = pd.DataFrame({
'age': [25, 30, 22, 40, 18],
'income': [50000, 75000, 30000, 90000, 20000]
})
# 創(chuàng)建布爾掩碼
young_high_income = (data['age'] < 30) & (data['income'] > 40000)
print(young_high_income)
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 應(yīng)用掩碼篩選數(shù)據(jù)
result = data[young_high_income]
print(result)
# age income
# 0 25 50000
# NumPy中的類似操作
arr = np.array([1, 2, 3, 4, 5])
mask = (arr % 2 == 0) # 偶數(shù)掩碼
print(arr[mask]) # [2 4]
自定義上下文管理器中的布爾邏輯
在實現(xiàn)上下文管理器時,布爾轉(zhuǎn)換規(guī)則可用于創(chuàng)建更直觀的API:
class DatabaseConnection:
def __init__(self, db_name):
self.db_name = db_name
self.connected = False
def __enter__(self):
print(f"Connecting to {self.db_name}...")
self.connected = True
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Closing connection")
self.connected = False
def __bool__(self):
return self.connected
# 使用示例
with DatabaseConnection("main_db") as conn:
print(bool(conn)) # True(在with塊內(nèi))
if conn:
print("Connection is active")
print(bool(conn)) # False(退出with塊后)
這種設(shè)計使連接對象可以直接用于條件判斷,提高代碼可讀性。
Web開發(fā)中的布爾轉(zhuǎn)換實踐
在Web框架(如Flask)中,布爾轉(zhuǎn)換規(guī)則有廣泛應(yīng)用:
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
query = request.args.get('q', '').strip()
# 檢查是否有有效查詢
if not query:
return "Please enter a search term", 400
# 執(zhí)行搜索...
results = perform_search(query)
# 檢查是否有結(jié)果
if not results:
return "No results found", 404
return format_results(results)
def perform_search(q):
# 模擬搜索:空查詢返回空列表
return [f"Result {i}" for i in range(5)] if q else []
# 測試示例
# /search?q= → 400錯誤(空查詢)
# /search?q=python → 返回結(jié)果
# /search?q=xyz → 404(無結(jié)果)
在這個例子中,if not query和if not results都依賴于字符串和列表的真值測試規(guī)則。
單元測試中的布爾斷言技巧
在編寫測試時,理解布爾轉(zhuǎn)換能創(chuàng)建更精確的斷言:
import unittest
class TestBooleanConversions(unittest.TestCase):
def test_empty_collections(self):
self.assertFalse([])
self.assertFalse({})
self.assertFalse(())
self.assertFalse(set())
self.assertFalse('')
def test_zero_values(self):
self.assertFalse(0)
self.assertFalse(0.0)
self.assertFalse(0j)
self.assertFalse(False)
self.assertFalse(None)
def test_truthy_values(self):
self.assertTrue([0])
self.assertTrue({'key': 0})
self.assertTrue(' ')
self.assertTrue(True)
self.assertTrue(1)
def test_custom_objects(self):
class AlwaysFalse:
def __bool__(self):
return False
self.assertFalse(AlwaysFalse())
class EmptyButTruthy:
def __len__(self):
return 0
def __bool__(self):
return True
self.assertTrue(EmptyButTruthy())
if __name__ == '__main__':
unittest.main()
注意EmptyButTruthy類:盡管__len__返回0,但__bool__優(yōu)先并返回True,這展示了方法調(diào)用的優(yōu)先級。
布爾轉(zhuǎn)換與Python設(shè)計哲學
Python的布爾轉(zhuǎn)換規(guī)則深深植根于其設(shè)計哲學:“顯式優(yōu)于隱式”(Explicit is better than implicit)。雖然自動轉(zhuǎn)換提供了便利,但也要求開發(fā)者理解背后的機制。
Python之禪中的相關(guān)啟示
- “明了優(yōu)于晦澀”:理解
bool([])為何是False比記住規(guī)則更重要 - “扁平優(yōu)于嵌套”:避免深層嵌套的條件判斷,利用布爾轉(zhuǎn)換簡化邏輯
- “簡單勝于復(fù)雜”:利用
any()和all()替代復(fù)雜的循環(huán)檢查
與其他語言的對比
了解Python與其他語言的差異有助于避免遷移時的錯誤:
| 特性 | Python | JavaScript | PHP |
|---|---|---|---|
| 空數(shù)組 | False | True | False |
| 字符串"0" | True | False | False |
| NaN | True | False | True |
| 零長度字符串 | False | False | False |
這種對比突顯了Python在真值測試中更注重"空性"(emptiness)而非內(nèi)容解析。
結(jié)語:掌握布爾轉(zhuǎn)換的藝術(shù)
布爾類型與其他類型的轉(zhuǎn)換規(guī)則看似簡單,實則蘊含著Python設(shè)計的精妙之處。從基礎(chǔ)的真值測試到高級的數(shù)據(jù)處理技巧,理解這些規(guī)則能幫助你:
- 編寫更健壯的代碼:避免因隱式轉(zhuǎn)換導致的邏輯錯誤
- 提高代碼可讀性:利用Python的特性創(chuàng)建簡潔優(yōu)雅的條件判斷
- 優(yōu)化數(shù)據(jù)處理:在Pandas、NumPy等庫中高效使用布爾掩碼
- 設(shè)計更好的API:通過
__bool__方法創(chuàng)建直觀的對象接口
記?。?strong>真正的Pythonic代碼不僅"能工作",更要"清晰表達意圖"。在利用布爾轉(zhuǎn)換的便利性時,始終考慮代碼的可讀性和可維護性。當你能自信地解釋為什么bool([None])是True,而bool(range(0))是False時,你就真正掌握了Python類型系統(tǒng)的精髓。
最后,讓我們用一個綜合示例總結(jié)本文要點:
def process_data(data, debug=False):
"""
處理數(shù)據(jù)的示例函數(shù),展示布爾轉(zhuǎn)換的最佳實踐
:param data: 輸入數(shù)據(jù)(應(yīng)為非空列表)
:param debug: 是否啟用調(diào)試模式
:return: 處理后的結(jié)果
"""
# 1. 類型驗證
if not isinstance(data, list):
raise TypeError("Data must be a list")
# 2. 空值檢查(利用真值測試)
if not data:
debug and print("Warning: Empty data received")
return []
# 3. 調(diào)試輸出(短路求值)
debug and print(f"Processing {len(data)} items...")
# 4. 過濾有效數(shù)據(jù)(布爾掩碼)
valid_items = [item for item in data
if item is not None and bool(item)]
# 5. 檢查是否有有效數(shù)據(jù)
if not valid_items:
debug and print("No valid items after filtering")
return []
# 6. 處理數(shù)據(jù)(布爾值參與數(shù)值計算)
result = [item * (2 if item > 0 else 1)
for item in valid_items]
debug and print(f"Processed {len(result)} valid items")
return result
# 測試示例
print(process_data([1, -2, 0, None, 3], debug=True))
# 調(diào)試輸出:
# Processing 5 items...
# Processed 3 valid items
# 輸出: [2, -2, 6]
這個示例融合了本文討論的多個關(guān)鍵點:類型驗證、真值測試、短路求值、布爾掩碼和數(shù)值轉(zhuǎn)換,展示了如何在實際代碼中優(yōu)雅應(yīng)用布爾轉(zhuǎn)換規(guī)則。
通過深入理解Python的布爾類型轉(zhuǎn)換機制,你將能編寫出既高效又可靠的代碼,真正發(fā)揮Python作為"可執(zhí)行的偽代碼"的優(yōu)勢?,F(xiàn)在,是時候?qū)⑦@些知識應(yīng)用到你的項目中了!
以上就是Python布爾類型與其他類型的轉(zhuǎn)換規(guī)則的詳細內(nèi)容,更多關(guān)于Python布爾類型與其他類型轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用Python批量轉(zhuǎn)換PPT為圖片的實戰(zhàn)指南
本文將探討如何利用?Python?實現(xiàn)從演示文稿到高分辨率圖片的深度轉(zhuǎn)換,并針對導出質(zhì)量控制、單頁與批量處理等核心場景提供技術(shù)實現(xiàn)方案,需要的朋友可以參考下2026-02-02
Nginx+Uwsgi+Django 項目部署到服務(wù)器的思路詳解
這篇文章主要介紹了Nginx+Uwsgi+Django 項目部署到服務(wù)器的思路,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Python實現(xiàn)Canny及Hough算法代碼實例解析
這篇文章主要介紹了Python實現(xiàn)Canny與Hough算法代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
python使用numpy按一定格式讀取bin文件的實現(xiàn)
這篇文章主要介紹了python使用numpy按一定格式讀取bin文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
如何在python開發(fā)工具PyCharm中搭建QtPy環(huán)境(教程詳解)
這篇文章主要介紹了在python開發(fā)工具PyCharm中搭建QtPy環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
python裝飾器實現(xiàn)對異常代碼出現(xiàn)進行自動監(jiān)控的實現(xiàn)方法
這篇文章主要介紹了python裝飾器實現(xiàn)對異常代碼出現(xiàn)進行自動監(jiān)控的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

