国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

作為初學者應避免的四個常見 Python 錯誤

開發 前端
我將討論介紹性 Python 程序員常犯的四個錯誤。 在我早期的 Python 時代學習這些陷阱對我非常有幫助,我希望它也能對你有用。

Python 對于初學者來說是一門優秀的語言,但這并不意味著就不會犯錯誤。 尤其是在學習編程的早期階段,很容易編寫出技術上正確但風格上很差的代碼。

如果您要學習編碼,那么學好它是至關重要的。 無論是在學術界還是工業界,代碼的質量都很重要。 它不僅會影響您,還會影響將繼續閱讀和使用您的代碼的每一個人。 也許更自私的是,它還會影響您的招聘前景。

在本文中,我將討論介紹性 Python 程序員常犯的四個錯誤。 在我早期的 Python 時代學習這些陷阱對我非常有幫助,我希望它也能對你有用。

讓我們開始吧。

布爾條件語句

這是入門程序員常犯的錯誤。 這也是不那么入門的程序員所犯的錯誤,他們缺乏正式的編程背景,因為他們只是將代碼用作工具。 我在看著你,數據科學家。

Python 中的條件語句很有用,但并不總是必需的。 當您檢查的條件已經包含布爾值(真或假)時,尤其如此。

讓我用一個簡單的例子來說明。 假設我們要編寫代碼來確定一個數據集是否已經被清理過。 對我們來說幸運的是,代碼庫包含一個名為 is_data_clean 的方便變量,它可以跟蹤這一點。 我們需要做的就是檢查它并返回正確的值。

作為第一次嘗試,我們可能會編寫如下內容:

def a_function():
if is_data_clean == True:
return True
else:
return False

這已經可以運行了,但它不必如此復雜。 你看到問題了嗎? 仔細看。

變量 is_data_clean 已經是一個布爾值; 因此,它已經包含了您需要返回的值! 代碼檢查它是否為 True,然后返回 True,如果它不是 True(意味著它為 False),則代碼返回 False。 這只是一大堆不必要的檢查。

我們可以將函數中的代碼簡化為一行:

def a_function():
return is_data_clean

好多了。

手動求和、均值或其他內置操作

Python 具有比大多數人意識到的更多的內置功能。 仍然使用循環來手動計算總和的人數實在是太多了。

如果我們在 Python 中有一個數字列表,我們絕對不應該像這樣計算總和:

total = 0
for num in numbers_list:
total += num

請改用內置的求和函數:

total

需要最小值還或最大值? 全宇宙都禁止你寫這樣的代碼:

import math
minimum = math.inf # 從最高可能值開始
for number in numbers_list:
if number < minimum:
minimum = number

這不是介紹性的計算機科學原理課程; 這是真實的世界。 停止重新發明輪子并使用內置的 min 和 max 函數:

minimum = min(numbers_list)
maximum

?有關內置函數的完整列表,請參閱 Python 文檔

獎勵:技術上不是內置的內置功能。

有些功能很難找到,但這并不意味著您不應該找到它們。

例如,如果我們需要一列數字?的平均值(您可能會感覺到這是反復出現的主題),我們可以使用下面的第一個代碼片段,但我們應該使用第二個:

# 片段 1:不要這樣做!
total = 0
for num in numbers_list:
total += num
avg = total / len(numbers_list)

# 片段 2:這樣做!
import numpy as np
avg = np.mean(numbers_list)

通常,Python 會在模塊中提供有用的函數。 定位我們需要的模塊并導入函數可能需要一些額外的工作,但非常值得。

請記住 — Python 就是簡單性和可讀性。 內置函數是你的朋友。 與你的人類朋友不同,他們永遠不會讓人失望。

不做無意義的事情

在我教授的一門 Python 入門課程中,學生的第一個項目是編寫一個簡單的決策算法。 這主要是一個條件練習,要求學生定義一個問題和相關的評分系統,以確定某人有資格回答這個問題的可能性。

例如,有人可能會問,“我應該成為一名數據科學家嗎?” 然后,該算法可能包含以下問題,所有這些問題都會根據答案從最終輸出分數中增加或減少:

  • 我是否有興趣使用數據來深入了解世界?
  • 我愿意學習 Python 嗎?
  • 我喜歡與多學科團隊合作嗎?

等等。

在編寫算法的過程中,許多學生意識到在某些情況下,他們根本不想對總分做任何事情。 例如,他們可能會決定,如果有人愿意學習 Python,那么他們的總分會增加 10 分,但如果他們不愿意,則分數保持不變。

大多數學生使用以下代碼實現它:

# willing_to_lean 是一些基于用戶輸入的預定義變量
if willing_to_learn:
score += 10
else:
score += 0

這是什么都不做的經典案例。 讓我們分解一下 Python 在看到代碼行 score += 0 時必須執行的所有操作:

  • 它需要查找變量 score 的值。
  • 它需要將 0 添加到該值。 這需要調用加法函數,傳入兩個參數(當前值和 0),并計算輸出。
  • 將 score 變量重新分配給新值(顯然是相同的)。

所有這些代碼什么都不做。

當然,這對計算機來說不是很大的工作量,也不會對代碼的效率產生任何有意義的影響。 也就是說,它毫無意義,而且有些不干凈,這是優秀 Python 代碼所不具備的特征。

更好的解決方案是使用 Python 的 pass 關鍵字,它實際上告訴 Python 什么都不做,繼續前進。 它填充了一行不需要的代碼,但如果完全留空就會出錯。 我們甚至可以添加一點評論以提供進一步的清晰度:

if willing_to_learn:
score += 10
else:
pass # 保持分數不變

更干凈、更清晰、更 Pythonic。

單一的條件變得瘋狂

條件語句可以說是標準編程中最強大和一致的結構之一。 第一次學習它時,很容易忽略一個重要的微妙之處。

當我們要檢查兩個或多個條件時,就會出現這種情況。 例如,假設我們正在審查一項調查,以獲取以下三種形式之一的回答:“Yes”、“No”或“Maybe”。

早期的 Python 程序員通常使用以下兩種方式之一對此進行編碼:

# 可能 1
if response == "Yes":
# do something
if response == "No":
# do something
if response == "Maybe":
# do something

# 可能 2
if response == "Yes":
# do something
elif response == "No":
# do something
else:
# do something

在這種情況下,這兩個代碼片段實際上是相同的。 它們的行為方式相同,理解起來并不特別混亂,并且它們實現了預期的目標。 當人們錯誤地認為上面的兩個結構總是等價時,問題就出現了。

這是錯誤的。 上面的第二個代碼片段是由多個部分組成的單個條件表達式,而第一個代碼片段由三個獨立的條件表達式組成,盡管它們看起來是相互關聯的。

為什么這很重要? 因為每當 Python 看到一個全新的 if 關鍵字(即一個新的條件表達式開始)時,它就會檢查關聯的條件。 另一方面,如果當前條件表達式中的先前條件不滿足,Python 只會輸入 elif 或 else 條件。

讓我們看一個例子,看看為什么這很重要。 假設我們需要編寫代碼,根據學生在某項作業中的分數給他們打分。 我們在Python 文件中寫入以下代碼:

score = 76

print("SNIPPET 1")
print()

if score < 100:
print('A')
elif score < 90:
print('B')
elif score < 80:
print('C')
elif score < 70:
print('D')
else:
print('F')

print()
print("SNIPPET 2")
print()

if score < 100:
print('A')
if score < 90:
print('B')
if score < 80:
print('C')
if score < 70:
print('D')
if score < 60:
print('F')

運行此代碼輸出以下內容:

SNIPPET 1
A
SNIPPET 2
A
B
C

你看得到差別嗎? 在第二種情況下,我們得到了意想不到的輸出。 為什么? 因為 Python 將每個 if 語句作為一個新的條件來讀取,所以如果一個分數恰好小于多個數字檢查,則會為所有這些打印出相應的字母等級。

現在,有多種方法可以使用多個 if 語句; 例如,我們可以讓條件檢查范圍而不僅僅是上限。 這個例子的重點不是爭論一個例子優于另一個例子(盡管為了清楚起見,我個人傾向于使用 elif 和 else),而只是為了說明它們是不一樣的。

確保你明白這一點。

最后的想法和回顧

這是您的 Python 初學者備忘單:

  1. 當您可以簡單地直接返回布爾值時,不要為布爾值設置不必要的條件。
  2. 內置函數是您最好的朋友。
  3. 如果您需要告訴 Python 什么都不做,請使用 pass 關鍵字。
  4. 確保正確構造條件表達式,理解 if 、 elif 和 else 關鍵字的含義。

你決定學習 Python 真是太好了——我向你保證,這門語言會對你很好。

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-05-08 12:41:29

Python編程語言

2024-06-04 00:00:06

Python初學者優化

2022-10-19 23:18:27

KubernetesPod錯誤

2022-07-22 15:55:32

Python代碼語言

2011-01-11 08:45:17

JavaScript

2015-12-21 11:45:27

C語言常見問題錯誤

2013-02-20 10:13:38

JavaJava初學者

2021-01-11 09:13:55

UbuntuLinux發行版

2020-01-14 17:31:46

數據科學誤區人工智能

2025-04-07 01:35:00

Go語言程序

2024-08-17 12:14:06

2019-06-11 09:52:18

IPv6IPv4程序

2024-03-11 18:17:18

Python字符串分隔符

2020-09-06 08:19:11

Python編程語言開發

2019-08-29 08:58:24

Python布爾型編程語言

2020-08-25 10:14:59

JavaScript開發 技巧

2011-04-06 14:42:25

Delphi

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2011-08-24 09:54:05

Lua字符春交互
點贊
收藏

51CTO技術棧公眾號

日韩欧美99| 亚洲午夜一区二区三区| 国语对白精品一区二区| 六月丁香综合在线视频| 欧美一区二区播放| 欧美资源一区| 天堂影视av| 99在线视频免费观看| av网站在线免费看推荐| 色先锋久久影院av| 久久久亚洲精品石原莉奈| 亚洲国产精品热久久| 亚洲午夜精品一区二区| 日本一二区视频| 偷拍亚洲精品| 日韩一区二区三区在线| 日韩中文在线观看| 国产女人在线观看| 在线中文字幕一区| a级网站在线播放| 欧美日韩国产免费一区二区| 青青草av免费在线观看| 欧美日本精品一区二区三区| 在线观看黄av| 亚洲色图美腿丝袜| 暧暧视频在线免费观看| 日本高清免费不卡视频| 美日韩黄色片| 久久精品一区二区三区av| 久久久久成人精品免费播放动漫| 99热国内精品| 国产日韩精品推荐| 欧美亚洲福利| 欧美军同video69gay| 中文视频在线| 91高清视频在线| 乱熟女高潮一区二区在线| 国产人与zoxxxx另类91| 亚洲男同性恋视频| 国产美女99p| 91成人高清| 男女视频在线观看免费| 91丨porny丨首页| 日本a级片免费| 欧美专区在线观看一区| 久久网福利资源网站| 国产精品高潮久久| 欧美成人在线免费观看| 一区二区三区91| 日韩欧美小视频| 国产女精品视频网站免费| 国产日韩欧美麻豆| 成全电影大全在线观看| 国产精品久久久久久久久免费| 99热免费精品在线观看| 三上悠亚久久精品| 欧美国产日本韩| 男操女在线观看| 91黄视频在线| www视频在线观看| 精品久久人人做人人爱| chinese偷拍一区二区三区| 欧美三级日韩三级国产三级| 蜜桃tv一区二区三区| 欧美另类99xxxxx| 欧美影视资讯| 国产偷久久久精品专区| 国内精品久久久久影院一蜜桃| 日韩毛片在线免费看| 欧美视频日韩视频在线观看| 超碰97在线免费观看| 国产精品美女久久久久久| 日韩精品久久一区二区| 一区二区日韩免费看| 国产黑人绿帽在线第一区| 写真福利理论片在线播放| 久久久久一区二区三区四区| 国产又黄又爽免费视频| 永久91嫩草亚洲精品人人| 亚欧无线一线二线三线区别| 亚洲男人天堂古典| 色鬼7777久久| 亚洲国产精品va在线看黑人| 久久亚洲风情| 激情在线视频| 亚洲一区bb| 国产一区二区三区在线观看免费视频| 精品麻豆一区二区三区| 亚洲国产激情一区二区三区| 亚洲激情第一页| 亚洲麻豆国产自偷在线| 国产免费区一区二区三视频免费| 亚洲精品久久久久久一区二区| 欧美日韩综合在线| 亚洲高清在线一区| 欧美亚洲黄色片| 欧美日韩国产欧美日美国产精品| japanese色系久久精品| 国产在线视频在线| 日韩经典中文字幕在线观看| 石原莉奈在线亚洲三区| heyzo亚洲| 伊人久久综合97精品| 日本视频一区二区三区| 成人三级黄色免费网站| 日本成人黄色| 97婷婷涩涩精品一区| 欧美区一区二区三区| 久久久国产午夜精品| 国产一区二区影视| 欧美性色欧美a在线播放| 另类激情视频| 天天做天天爱天天高潮| 成人一区在线观看| 欧美高清另类hdvideosexjaⅴ| 欧美精品久久久久久久免费| 国产噜噜噜噜噜久久久久久久久| 精品久久久久久久久久久院品网 | 亚洲综合好骚| 欧美乱做爰xxxⅹ久久久| 欧美私模裸体表演在线观看| 视频一区中文字幕精品| 99视频在线免费| 亚洲а∨天堂久久精品9966| 国产一区二区欧美| 影音先锋亚洲视频| 亚洲精品视频久久| 伊人久久大香线蕉av超碰演员| 日韩电影免费| 91国产在线免费观看| 久久蜜桃av一区二区天堂| 中文字字幕在线中文乱码电影| 日韩视频在线观看国产| 亚洲欧美在线免费| 五月激情综合| 性欧美video另类hd尤物| 精品视频免费在线播放| 日韩在线小视频| 日韩在线观看一区二区| 猫咪在线永久网站| 国产精品网站大全| 91欧美激情一区二区三区成人| av黄色在线观看| 国产区亚洲区欧美区| 亚洲高清免费观看| 精品久久网站| 久青草国产在线| 国产精品区一区二区三在线播放| 国产精品视频第一区| 日韩欧美一区二区三区在线观看| 99久久久精品免费观看国产 | 亚洲狠狠婷婷综合久久久| 欧美日韩在线播放三区| 日韩二区在线观看| 国产激情一区| 日日av拍夜夜添久久免费| 婷婷婷国产在线视频| 麻豆一区二区三区在线观看| 欧美另类暴力丝袜| 1区2区3区欧美| 第四色成人网| av中文字幕在线观看| 春色成人在线视频| 日韩精品一二三四区| 日韩欧美黄色影院| 狠狠色狠狠色综合系列| 欧美日韩精品一区二区三区在线观看| 精产国产伦理一二三区| 国产精品一区二区三区毛片淫片 | 男人用嘴添女人下身免费视频| 97在线视频精品| 狠狠躁夜夜躁人人躁婷婷91| 日本中文一区二区三区| 成人精品国产亚洲| a日韩av网址| 欧美一区二区三区高清视频| 97久久精品人人爽人人爽蜜臀| 亚洲国产精品一区二区久久恐怖片| av在线麻豆| 超碰成人福利| 日本vs亚洲vs韩国一区三区二区| 亚洲视频免费观看| 亚洲毛片在线观看.| 秋霞午夜一区二区| 伊人情人网综合| 精品国产一区二区三区四区阿崩| 午夜小视频在线| 欧美三级伦理在线| av一区二区久久| 亚洲欧美日韩国产成人精品影院| 亚洲成人午夜电影| 亚洲18女电影在线观看| 欧美日韩大陆在线| 精品国模在线视频| 国产精品亚洲аv天堂网| 国产精品一区在线播放| 日本丰满少妇xxxx| 最新天堂资源在线资源| 4438x成人网全国最大| 曰本一区二区|