日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python入門(mén)應(yīng)該避免什么樣的錯(cuò)誤

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:聞數(shù)起舞 ? 2020-04-06 12:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在分享每個(gè)Python新手應(yīng)該知道的4個(gè)常見(jiàn)錯(cuò)誤之前,請(qǐng)確保您熟悉以下文章中的一些Python內(nèi)置功能。

1.不使用迭代器

每個(gè)Python新手都會(huì)這樣做,無(wú)論他們是否熟練使用其他編程語(yǔ)言。 跑不了的。

給定一個(gè)列表list_,您將如何使用for循環(huán)逐個(gè)訪問(wèn)列表中的元素? 我們知道Python中的列表已建立索引,因此我們可以通過(guò)list_ [i]訪問(wèn)第i個(gè)元素。 然后,我們可以為for循環(huán)創(chuàng)建一個(gè)介于0到len(list_)之間的整數(shù)的迭代器,如下所示:

for i in range(len(list_)): foo(list_[i])

有用。 代碼沒(méi)有問(wèn)題。 這也是在其他語(yǔ)言(例如C)中構(gòu)造for循環(huán)的標(biāo)準(zhǔn)方法。但是實(shí)際上,我們可以在Python中做得更好。

怎么樣?

您知道Python中的列表是可迭代的嗎? 通過(guò)利用其可迭代的性質(zhì),我們可以生成更具可讀性的代碼,如下所示:

for element in list_: foo(element)

Photo by The Creative Exchange on Unsplash

通過(guò)zip函數(shù)可以在for循環(huán)中并行遍歷多個(gè)列表,而如果您堅(jiān)持在迭代可迭代對(duì)象時(shí)獲取索引號(hào)(即計(jì)數(shù)器),則枚舉可能會(huì)有所幫助。 我希望早先了解的5個(gè)Python功能對(duì)它們進(jìn)行了介紹和解釋。

2.使用全局變量

全局變量是在主腳本中聲明的具有全局范圍的變量,而局部變量是在具有局部范圍的函數(shù)內(nèi)聲明的變量。 在Python中使用global關(guān)鍵字可讓您在函數(shù)中本地訪問(wèn)和更改全局變量。 這是一個(gè)例子:

a = 1 # a variable def increment(): a += 1 return adef increment2(): global a # can make changes to global variable “a” a += 1 return a increment() # UnboundLocalError: local variable ‘a(chǎn)’ referenced before assignmentincrement2() # returns 2

許多初學(xué)者都喜歡它,因?yàn)槭褂胓lobal似乎可以避免傳遞函數(shù)所需的所有參數(shù)。 但這實(shí)際上是不正確的。 它只是隱藏了動(dòng)作。

使用全局變量也不利于調(diào)試。 功能應(yīng)被視為功能塊框,并且應(yīng)可重復(fù)使用。 修改全局變量的函數(shù)可能會(huì)給很難發(fā)現(xiàn)的主腳本帶來(lái)副作用,并且可能導(dǎo)致復(fù)雜的意大利面條式代碼,并且調(diào)試起來(lái)要困難得多。

在局部函數(shù)中修改全局變量是不良的編程習(xí)慣。 您應(yīng)該將變量作為參數(shù)傳遞,對(duì)其進(jìn)行修改,并在函數(shù)末尾將其返回。

Photo by Vladislav Klapin on Unsplash

*不要將全局變量與全局常量混淆,因?yàn)樵诖蠖鄶?shù)情況下使用后者非常好。

3.不了解可變對(duì)象

對(duì)于新的Python學(xué)習(xí)者來(lái)說(shuō),這也許是最常見(jiàn)的驚喜,因?yàn)榇斯δ茉谠撜Z(yǔ)言中非常獨(dú)特。

Python中有兩種對(duì)象。 可變對(duì)象可以在運(yùn)行時(shí)更改其狀態(tài)或內(nèi)容,而不可變對(duì)象則不能。 許多內(nèi)置對(duì)象類(lèi)型是不可變的,包括int,float,string,bool和tuple。

st = ‘A string’ st[0] = ‘B’ # You cannot do this in Python

另一方面,諸如list,set和dict的數(shù)據(jù)類(lèi)型是可變的。 因此,您可以更改列表中元素的內(nèi)容,例如 list_ [0] =‘new’。

如果函數(shù)中的默認(rèn)參數(shù)是可變的,則會(huì)發(fā)生意外情況。 讓我們以以下函數(shù)為例,其中可變的空列表是參數(shù)list_的默認(rèn)值。

def foo(element, list_=[]): list_.append(element) r eturn list_

讓我們兩次調(diào)用該函數(shù),而不用輸入list_的參數(shù),以使其采用默認(rèn)值。 理想情況下,如果不提供第二個(gè)參數(shù),則每次調(diào)用該函數(shù)時(shí)都會(huì)創(chuàng)建一個(gè)新的空列表。

a = foo(1) # returns [1]b = foo(2) # returns [1,2], not [2]! WHY?

什么?

事實(shí)證明,在定義函數(shù)時(shí),Python中的默認(rèn)參數(shù)會(huì)被評(píng)估一次。 這意味著調(diào)用該函數(shù)不會(huì)刷新其默認(rèn)參數(shù)。

Photo by Ravi Roshan on Unsplash

因此,如果默認(rèn)參數(shù)是可變的,并且每次調(diào)用該函數(shù)時(shí)都會(huì)將其更改??勺兊哪J(rèn)參數(shù)將適用于所有將來(lái)的函數(shù)調(diào)用。 “標(biāo)準(zhǔn)”解決方案是使用(不可變)None默認(rèn)值,如下所示。

def foo(element, list_=None): if list_ is None: list_ = [] list_.append(element) return list_

4.不復(fù)制

復(fù)制的概念對(duì)于學(xué)習(xí)者而言可能是陌生的,甚至是違反直覺(jué)的。 假設(shè)您有一個(gè)列表a = [[0,1],[2,3]],然后通過(guò)b = a聲明一個(gè)新列表。 現(xiàn)在,您將擁有兩個(gè)具有相同元素的列表。 通過(guò)更改列表b中的某些元素,它應(yīng)該不會(huì)對(duì)列表a產(chǎn)生任何(副作用),對(duì)嗎?

錯(cuò)誤。

a = [[0,1],[2,3]]b = ab[1][1] = 100print(a,b) # [[0, 1], [2, 100]] [[0, 1], [2, 100]]print(id(a)==id(b))# True

當(dāng)您使用賦值語(yǔ)句(即b = a)“復(fù)制”列表時(shí),在一個(gè)列表元素上所做的任何修改在兩個(gè)列表中均可見(jiàn)。 賦值運(yùn)算符僅在目標(biāo)和對(duì)象之間創(chuàng)建綁定,因此示例中的列表a和b共享相同的引用,即Python中的id()。

如何復(fù)制對(duì)象?

如果您要“復(fù)制”對(duì)象并且僅修改新(或舊)對(duì)象中的值而沒(méi)有綁定,則有兩種創(chuàng)建副本的方法:淺副本和深副本。 兩個(gè)對(duì)象將具有不同的引用。

Photo by Louis Hansel on Unsplash

使用前面的示例,可以通過(guò)b = copy.copy(a)創(chuàng)建a的淺表副本。 淺表副本會(huì)創(chuàng)建一個(gè)新對(duì)象,該對(duì)象存儲(chǔ)原始元素的引用。 這聽(tīng)起來(lái)可能很復(fù)雜,但讓我們看下面的示例:

import copya = [[0,1],[2,3]]b = copy.copy(a)print(id(a)==id(b))# Falseb[1] = 100print(a,b)# [[0, 1], [2, 3]] [[0, 1], 100]b[0][0] = -999print(a,b)# [[-999, 1], [2, 3]] [[-999, 1], 100]print(id(a[0]) == id(b[0]))# True

在創(chuàng)建嵌套列表a的淺副本(我們稱(chēng)為b)之后,兩個(gè)列表具有不同的引用id(a)!= id(b),符號(hào)!=表示“不等于”。 但是,它們的元素具有相同的引用,因此id(a [0])== id(b [0])。

這意味著更改b內(nèi)部的元素不會(huì)影響列表a,但是修改b [1]內(nèi)部的元素確實(shí)會(huì)影響a [1],因此此副本很淺。

簡(jiǎn)而言之,如果b是a的淺副本,則對(duì)b中的嵌套對(duì)象內(nèi)的元素進(jìn)行的任何更改都將顯示在a中。

如果要復(fù)制嵌套對(duì)象而元素之間沒(méi)有任何綁定,則需要使用b = copy.deepcopy(a)的深拷貝。 深層副本將創(chuàng)建一個(gè)新對(duì)象,然后以遞歸方式在原始元素中創(chuàng)建嵌套對(duì)象的副本。

簡(jiǎn)而言之,深拷貝復(fù)制所有內(nèi)容而沒(méi)有任何綁定。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67871
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74419
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90330
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用 LPC55S69 和 MCUX 驅(qū)動(dòng)程序的 CDC 應(yīng)該實(shí)現(xiàn)什么樣的吞吐量?

    ,使用 LPC55S69 和 MCUX 驅(qū)動(dòng)程序的 CDC 應(yīng)該實(shí)現(xiàn)什么樣的吞吐量? 特別是,我想知道 CDC 驅(qū)動(dòng)程序是否針對(duì)性能進(jìn)行了優(yōu)化,或者它是否設(shè)計(jì)為將復(fù)雜性降至最低。我試圖避免切換到高速 USB
    發(fā)表于 04-16 09:20

    [VirtualLab] 使用Python運(yùn)行VirtualLab Fusion光學(xué)仿真

    的存檔可以從我們的網(wǎng)站上下載。 配置Python環(huán)境 確保計(jì)算機(jī)上安裝了Python*。請(qǐng)注意,應(yīng)該勾選“將python.exe添加到路徑”的選項(xiàng)進(jìn)行安裝。本用例中的說(shuō)明假定計(jì)算機(jī)上
    發(fā)表于 03-31 09:39

    當(dāng)前VisionFive開(kāi)發(fā)板上的JH7100 SoC對(duì)于NVDLA軟件站適配的情況是什么樣的?

    如題,想了解一下當(dāng)前VisionFive開(kāi)發(fā)板上的JH7100 SoC對(duì)于NVDLA軟件站適配的情況是什么樣的?
    發(fā)表于 03-31 07:44

    如何在 VisionFive 上使用 Python 包?

    確保執(zhí)行以下步驟: 將 Fedora OS 刷新到 Micro-SD 卡中,如將 Fedora OS 刷新到 Micro-SD 卡部分中的VisionFive 單板計(jì)算機(jī)快速入門(mén)指南. 登錄
    發(fā)表于 03-30 08:28

    安裝 Python VisionFive_GPIO失敗是哪里出了問(wèn)題?

    盡管按照最新的文檔,我在安裝 VisionFive.gpio 包時(shí)仍然收到錯(cuò)誤 sudo apt 安裝 libxml2-dev libxslt-dev python3 -m pip 安裝請(qǐng)求
    發(fā)表于 02-11 06:13

    礦卡應(yīng)該使用什么樣子的網(wǎng)關(guān)或者路由器?

    做礦山車(chē)輛通信這么多年,接到最多的咨詢(xún)就是:"我們礦上的卡車(chē)到底該配什么樣的網(wǎng)關(guān)?"說(shuō)實(shí)話(huà),這個(gè)問(wèn)題看似簡(jiǎn)單,但真正要給出一個(gè)靠譜的答案,得把礦山的實(shí)際工況掰開(kāi)了揉碎了分析。今天這篇文章,我就從
    的頭像 發(fā)表于 01-26 18:03 ?1144次閱讀
    礦卡<b class='flag-5'>應(yīng)該</b>使用<b class='flag-5'>什么樣</b>子的網(wǎng)關(guān)或者路由器?

    室外用電線應(yīng)該什么樣

    室外用電線的選擇需綜合考慮環(huán)境適應(yīng)性、安全性和耐用性,以下從材質(zhì)、結(jié)構(gòu)、防護(hù)等級(jí)和具體場(chǎng)景四個(gè)方面提供詳細(xì)建議: 一、核心材質(zhì)選擇 導(dǎo)體材質(zhì) 銅芯電線:導(dǎo)電性能優(yōu)異,電阻率低,發(fā)熱量小,長(zhǎng)期使用不易氧化斷芯,適合戶(hù)外固定布線或長(zhǎng)距離供電。 鋁芯電線:重量輕、成本低,但導(dǎo)電性較差,易氧化,適合臨時(shí)用電或短距離低壓場(chǎng)景(如臨時(shí)燈帶)。 推薦:優(yōu)先選銅芯,確保供電穩(wěn)定性和壽命。 絕緣與護(hù)套材質(zhì) PVC(聚氯乙烯):耐候性一
    的頭像 發(fā)表于 01-15 10:13 ?791次閱讀

    服務(wù)器數(shù)據(jù)恢復(fù)—一文讀懂服務(wù)器高頻故障排查+標(biāo)準(zhǔn)數(shù)據(jù)恢復(fù)流程

    服務(wù)器數(shù)據(jù)恢復(fù)到底是一個(gè)什么樣的流程? 服務(wù)器數(shù)據(jù)丟失后,進(jìn)行數(shù)據(jù)恢復(fù)前應(yīng)該做哪些準(zhǔn)備? 服務(wù)器出現(xiàn)故障后應(yīng)該如何操作才能避免數(shù)據(jù)被二次破壞?
    的頭像 發(fā)表于 01-08 11:11 ?475次閱讀

    機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中需避免的 7 個(gè)常見(jiàn)錯(cuò)誤與局限性

    無(wú)論你是剛入門(mén)還是已經(jīng)從事人工智能模型相關(guān)工作一段時(shí)間,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中都存在一些我們需要時(shí)刻關(guān)注并銘記的常見(jiàn)錯(cuò)誤。如果對(duì)這些錯(cuò)誤置之不理,日后可能會(huì)引發(fā)諸多麻煩!只要我們密切關(guān)注數(shù)據(jù)、模型架構(gòu)
    的頭像 發(fā)表于 01-07 15:37 ?367次閱讀
    機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中需<b class='flag-5'>避免</b>的 7 個(gè)常見(jiàn)<b class='flag-5'>錯(cuò)誤</b>與局限性

    沒(méi)有專(zhuān)利的opencv-python 版本

    GUI 依賴(lài),且默認(rèn)禁用 nonfree 專(zhuān)利模塊),版本需與核心版一致: # 先安裝核心版,再安裝配套 contrib 無(wú)頭版(避免專(zhuān)利風(fēng)險(xiǎn)) pip install opencv-python
    發(fā)表于 12-13 12:37

    知曉常見(jiàn)的銅纜安裝錯(cuò)誤避免

    銅纜(如網(wǎng)線、電話(huà)線等)是網(wǎng)絡(luò)和數(shù)據(jù)傳輸?shù)幕A(chǔ)設(shè)施,但在安裝過(guò)程中,由于操作不當(dāng)或忽視細(xì)節(jié),常出現(xiàn)各種錯(cuò)誤,導(dǎo)致網(wǎng)絡(luò)性能下降甚至故障。以下是常見(jiàn)的銅纜安裝錯(cuò)誤及預(yù)防措施,幫助您避免踩坑: 一、線纜
    的頭像 發(fā)表于 09-16 10:42 ?1318次閱讀

    SCADA數(shù)據(jù)采集站應(yīng)該什么樣的UPS電源?選錯(cuò)可能讓數(shù)據(jù)全丟!

    不夠。今天我們就從實(shí)際應(yīng)用的角度,聊聊SCADA數(shù)據(jù)采集站到底該配什么樣的UPS電源,避免踩坑。1.為什么普通UPS不適合SCADA系統(tǒng)?SCADA(數(shù)據(jù)采集與監(jiān)
    的頭像 發(fā)表于 08-19 11:04 ?807次閱讀
    SCADA數(shù)據(jù)采集站<b class='flag-5'>應(yīng)該</b>配<b class='flag-5'>什么樣</b>的UPS電源?選錯(cuò)可能讓數(shù)據(jù)全丟!

    電商API常見(jiàn)錯(cuò)誤排查指南:避免集成陷阱

    ,幫助您高效避免集成陷阱。內(nèi)容基于真實(shí)電商API實(shí)踐,確保可靠性和實(shí)用性。 一、常見(jiàn)錯(cuò)誤類(lèi)型 電商API集成中,錯(cuò)誤往往源于認(rèn)證、數(shù)據(jù)、限流等環(huán)節(jié)。以下是高頻問(wèn)題: 認(rèn)證失敗錯(cuò)誤 當(dāng)A
    的頭像 發(fā)表于 07-11 14:21 ?2319次閱讀
    電商API常見(jiàn)<b class='flag-5'>錯(cuò)誤</b>排查指南:<b class='flag-5'>避免</b>集成陷阱

    跟老齊學(xué)Python:從入門(mén)到精通

    本帖最后由 yuu_cool 于 2025-6-3 16:52 編輯 本資料是面向編程零基礎(chǔ)讀者的Python 入門(mén)教程,內(nèi)容涵蓋了Python 的基礎(chǔ)知識(shí)和初步應(yīng)用。以比較輕快的風(fēng)格,向零基
    發(fā)表于 06-03 16:10

    參考“AN75705 - EZ-USB? FX3 入門(mén)構(gòu)建項(xiàng)目但未生成.img文件,為什么?

    我參考“AN75705 - EZ-USB? FX3 入門(mén)”構(gòu)建了該項(xiàng)目,請(qǐng)參閱 8.1.1。 Build 中沒(méi)有錯(cuò)誤或警告消息,但是。 IMD 文件沒(méi)有更新? 我應(yīng)該檢查什么? 您能否給我提供更詳細(xì)的說(shuō)明或者我
    發(fā)表于 05-12 07:40
    肇州县| 孝昌县| 金塔县| 胶南市| 中牟县| 连城县| 青海省| 沭阳县| 宁明县| 盐源县| 弥渡县| 紫阳县| 凤台县| 莱西市| 木兰县| 晋城| 沧州市| 南投县| 色达县| 晋州市| 定远县| 淅川县| 西盟| 剑阁县| 唐河县| 迁安市| 龙南县| 咸宁市| 永德县| 都匀市| 仁布县| 荔波县| 宜春市| 安化县| 仪征市| 光泽县| 嘉祥县| 丰镇市| 临漳县| 夹江县| 红桥区|