色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python入門應該避免什么樣的錯誤

Wildesbeast ? 來源:今日頭條 ? 作者:聞數起舞 ? 2020-04-06 12:03 ? 次閱讀

在分享每個Python新手應該知道的4個常見錯誤之前,請確保您熟悉以下文章中的一些Python內置功能。

1.不使用迭代器

每個Python新手都會這樣做,無論他們是否熟練使用其他編程語言。 跑不了的。

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

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

有用。 代碼沒有問題。 這也是在其他語言(例如C)中構造for循環的標準方法。但是實際上,我們可以在Python中做得更好。

怎么樣?

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

for element in list_: foo(element)

Photo by The Creative Exchange on Unsplash

通過zip函數可以在for循環中并行遍歷多個列表,而如果您堅持在迭代可迭代對象時獲取索引號(即計數器),則枚舉可能會有所幫助。 我希望早先了解的5個Python功能對它們進行了介紹和解釋。

2.使用全局變量

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

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’ referenced before assignmentincrement2() # returns 2

許多初學者都喜歡它,因為使用global似乎可以避免傳遞函數所需的所有參數。 但這實際上是不正確的。 它只是隱藏了動作。

使用全局變量也不利于調試。 功能應被視為功能塊框,并且應可重復使用。 修改全局變量的函數可能會給很難發現的主腳本帶來副作用,并且可能導致復雜的意大利面條式代碼,并且調試起來要困難得多。

在局部函數中修改全局變量是不良的編程習慣。 您應該將變量作為參數傳遞,對其進行修改,并在函數末尾將其返回。

Photo by Vladislav Klapin on Unsplash

*不要將全局變量與全局常量混淆,因為在大多數情況下使用后者非常好。

3.不了解可變對象

對于新的Python學習者來說,這也許是最常見的驚喜,因為此功能在該語言中非常獨特。

Python中有兩種對象。 可變對象可以在運行時更改其狀態或內容,而不可變對象則不能。 許多內置對象類型是不可變的,包括int,float,string,bool和tuple。

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

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

如果函數中的默認參數是可變的,則會發生意外情況。 讓我們以以下函數為例,其中可變的空列表是參數list_的默認值。

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

讓我們兩次調用該函數,而不用輸入list_的參數,以使其采用默認值。 理想情況下,如果不提供第二個參數,則每次調用該函數時都會創建一個新的空列表。

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

什么?

事實證明,在定義函數時,Python中的默認參數會被評估一次。 這意味著調用該函數不會刷新其默認參數。

Photo by Ravi Roshan on Unsplash

因此,如果默認參數是可變的,并且每次調用該函數時都會將其更改。可變的默認參數將適用于所有將來的函數調用。 “標準”解決方案是使用(不可變)None默認值,如下所示。

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

4.不復制

復制的概念對于學習者而言可能是陌生的,甚至是違反直覺的。 假設您有一個列表a = [[0,1],[2,3]],然后通過b = a聲明一個新列表。 現在,您將擁有兩個具有相同元素的列表。 通過更改列表b中的某些元素,它應該不會對列表a產生任何(副作用),對嗎?

錯誤。

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

當您使用賦值語句(即b = a)“復制”列表時,在一個列表元素上所做的任何修改在兩個列表中均可見。 賦值運算符僅在目標和對象之間創建綁定,因此示例中的列表a和b共享相同的引用,即Python中的id()。

如何復制對象?

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

Photo by Louis Hansel on Unsplash

使用前面的示例,可以通過b = copy.copy(a)創建a的淺表副本。 淺表副本會創建一個新對象,該對象存儲原始元素的引用。 這聽起來可能很復雜,但讓我們看下面的示例:

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

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

這意味著更改b內部的元素不會影響列表a,但是修改b [1]內部的元素確實會影響a [1],因此此副本很淺。

簡而言之,如果b是a的淺副本,則對b中的嵌套對象內的元素進行的任何更改都將顯示在a中。

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

簡而言之,深拷貝復制所有內容而沒有任何綁定。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62684
  • 代碼
    +關注

    關注

    30

    文章

    4791

    瀏覽量

    68678
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84742
收藏 人收藏

    評論

    相關推薦

    AFE4400發射端的TX_N和TX_P之間的電壓應該什么樣的?是不是標準的方波?

    AFE4400發射端的TX_N和TX_P之間的電壓應該什么樣的?是不是標準的方波?
    發表于 01-02 07:31

    計劃的采樣頻率是2.56mhz,計劃采用dsp+外部ad的方案,請問應該選擇什么樣的采樣芯片比較合理?

    你好,我現在計劃的采樣頻率是2.56mhz,計劃采用dsp+外部ad的方案,請問應該選擇什么樣的采樣芯片比較合理,還有主芯片采用150mhz的28335能不能滿足? 精度要求在5%。
    發表于 12-24 07:08

    請問TVP7002的COAST引腳,如果想使用外部輸入,應該輸入什么樣的信號?

    您好!請問TVP7002的COAST引腳,如果想使用外部輸入,應該輸入什么樣的信號?TVP7002的EXT_CLK引腳,如果使用外部時鐘作為像素時鐘和ADC采樣時鐘,內部寄存器需要做哪些配置,外部電路需要做哪些修改?
    發表于 12-23 07:50

    請問DDC112U CLK的正確波形應該什么樣的?

    已有所圓滑. 這個CLK是將MCU供過來時鐘信號中間加了個RC(10ohm電阻+100pF)低通, 因此CLK更接近正弦波. 我的MCU和DDC112U是獨立5V供電的, 當系統全部其他條件都不變時, A/D讀值會相差一倍, 請問, 正確的CLK波形應該什么樣? 謝謝
    發表于 12-17 07:32

    請問AFE4400光電接收管處的波形是什么樣的?

    請問AFE4400光電接收管處的波形是什么樣的?
    發表于 12-11 06:42

    AMC1304后接的數字濾波器接口應該什么樣的?

    疑問: 1、AMC1304后接的數字濾波器接口應該什么樣的,和ADS1202一是采用的SPI嗎。如果是,我需要在上升沿還是下降沿進行數據的讀取。 2、后接的數字濾波器采用的是sin3 OSR為
    發表于 11-28 06:43

    什么樣的電阻柜用于風電光伏項目

    什么樣的電阻柜用于風電光伏項目?在風電光伏項目中,電阻柜作為重要組成部分,直接影響著整個系統的效率和穩定性。那么,我們應該選擇什么樣的電阻柜呢? 高效的電阻柜應具備較高的功率因數。在風電光伏項目
    的頭像 發表于 11-18 09:40 ?167次閱讀

    具有錯誤觸發避免功能的過零檢測

    電子發燒友網站提供《具有錯誤觸發避免功能的過零檢測.pdf》資料免費下載
    發表于 09-23 11:41 ?0次下載
    具有<b class='flag-5'>錯誤</b>觸發<b class='flag-5'>避免</b>功能的過零檢測

    代碼整潔之道-大師眼中的整潔代碼是什么樣

    幾個月前寫了一篇文章“如何寫出難以維護的代碼”,從中能大概了解到不好維護的代碼是什么樣,有哪些壞味道,那肯定有人會反問,難以維護的代碼見的太多了,也知道長什么樣,但是對于好維護的代碼是什么樣的比較
    的頭像 發表于 09-09 16:30 ?349次閱讀
    代碼整潔之道-大師眼中的整潔代碼是<b class='flag-5'>什么樣</b>

    OPA354應該什么樣的電容負載標準去使用?

    OPA354這個電路spec上,開環增益和相位并沒有說明搭載的負載電容是多大。請問在使用芯片時,應該什么樣的電容負載標準去使用呢。
    發表于 08-02 08:05

    opencv-python和opencv一

    不一。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發表于 07-16 10:38 ?1217次閱讀

    PCB線路板制造中常見的錯誤有哪些,如何避免?

    一站式PCBA智造廠家今天為大家講講避免常見pcb設計錯誤的方法有哪些?避免常見PCB設計錯誤的方法。避免常見的PCB設計
    的頭像 發表于 06-07 09:15 ?493次閱讀

    FPGA能實現什么樣的算法?

    FPGA功能如此強大,請問用FPGA能實現或者比較適合實現什么樣的算法?
    發表于 05-26 20:18

    使用PSOC 4000S系列CY8C4025LQS-S411做汽車上的觸控應用時,應該選用什么樣輸出波形的晶振呢?

    在使用PSOC 4000S系列 CY8C4025LQS-S411做汽車上的觸控應用時,我需要使用外部晶振,外部有源晶振有兩種類型的波形輸出,正弦波和方波,我想請教一下應該選用什么樣輸出波形的晶振呢?我的系統是5V供電的,是否有推薦的外接有源晶振型號?
    發表于 02-21 07:36

    什么樣的PLC可以直接驅動接觸器?什么樣的PLC不可以直接驅動?

    什么樣的PLC可以直接驅動接觸器?什么樣的PLC不可以直接驅動? PLC(可編程邏輯控制器)是一種用于自動化控制系統的電子設備,用于監控和控制多種工業過程。其中一個常見的應用是控制和驅動接觸器
    的頭像 發表于 02-18 14:11 ?1316次閱讀
    主站蜘蛛池模板: 帅哥操帅哥| 热思思| z0000性欧美| china男士同性视频tv| www精品一区二区三区四区| 国产精品亚洲污污网站入口 | 99热这里有精品| 国产成人无码免费精品果冻传媒 | 久久亚洲伊人| 人妖欧美一区二区三区四区| 中文字幕在线观看网站| 俄罗斯性孕妇孕交| 国家产午夜精品无人区| 久久人妻熟女中文字幕AV蜜芽| 亚洲国产在线精品国 | 亚洲综合视频| yellow日本动漫高清| 农民下乡在线观看3| 午夜爱情动作片P| 24小时日本免费看| 国产精品爽爽久久久久久蜜桃| 色宅男午夜电影网站| 97 sese| 国产在线精品一区二区在线看| 女人十八毛片水真多啊| 午夜理伦片免费| 国产亚洲综合视频| 亚洲视频在线观看| 动漫美女被h动态图| 恋夜影院支持安卓视频美女| 特黄大片aaaaa毛片| 97视频免费观看| 久久精品熟一区二区三区| 午夜伦伦电影理论片大片| 国产中文在线观看| 中文字幕欧美一区| 黄得让人湿的片段| 午夜免费体验30分| 精品亚洲一区二区在线播放| 无码一卡二卡三卡四卡| 阿片在线播放|