Python 基礎第十天

來源:互聯網
上載者:User

標籤:超出   分享   對比   引用   迭代   div   bubuko   函數定義   工作   

今日主要內容

1.動態參數

2.命名空間或名稱空間

3.函數的嵌套

4.關鍵字global和nonlocal

 

動態函數

動態參數*args   ,**kwargs

(1)*args

接收的是實參對應的所有位置參數(實參中超出形參位置的),並將其放在元組中.

例1.*args正確放置的位置(不帶預設參數)

例2:帶預設參數,不影響預設參數的取值

總結:

 形參對應順序:位置參數,*args,預設參數

 (2)**kwargs  動態傳參 

將所有關鍵字參數(超過形參設定的關鍵字參數)添加到一個字典裡.

例3:**kwargs正確使用

最終的排列順序:

例4:

總結:

最終順序:位置參數,*args,預設參數,**kwargs

一般工作的書寫方式:

def funcl(*args,**kwargs):

  pass

funcl

 

知識點: *的應用

例5:*args,*的作用

將各個可迭代的資料類型轉換成元組形式,以前是元組的,直接套用原式

例6:**kwargs 的** 作用

總結 *,**

 在函數的調用執行時,

*可迭代對象,代表打散(list,tuple,str,dict(鍵))將元素一一添加到args。

**字典,代表打散,將所有索引值對放到一個kwargs字典裡。

 

在函數定義時, *args,**kwargs代表的是彙總。

 def func(*args,**kwargs):  # 彙總
 print(args)
 print(kwargs)

 func(*,**)#打散

 =================================================================

2.命名空間,名稱空間

命名空間一共分為三種:

  全域命名空間

  局部命名空間

  內建命名空間

*內建命名空間中存放了python解譯器為我們提供的名字:input,print,str,list,tuple...它們都是我們熟悉的,拿過來就可以用的方法。

三種命名空間之間的載入與取值順序:

載入順序:內建命名空間(程式運行前載入)->全域命名空間(程式運行中:從上到下載入)->局部命名空間(程式運行中:調用時才載入)

取值順序:

  在局部調用:局部命名空間->全域命名空間->內建命名空間

  在全域調用:全域命名空間->內建命名空間

綜上所述,在找尋變數時,從小範圍,一層一層到大範圍去找尋。

如簡單描述:

載入為向下的箭頭,取值為向上的箭頭.

 

 

範圍

範圍就是作用範圍,按照生效範圍可以分為全域範圍和局部範圍。

全域範圍:包含內建名稱空間、全域名稱空間,在整個檔案的任意位置都能被引用、全域有效

局部範圍:局部名稱空間,只能在局部範圍生效

globals和locals方法

例7:比較全域和局部範圍區別

取的值全部放在字典裡面.

全域名稱空間:py3中內建的所有變數

局部名稱空間:根據所在位置,對變數進行展示,如果所在的函數中有變數,則列印函數的變數,如果則空,只尋找當前級內.

 

 對比

 

函數的嵌套

解決思路:

1.先確認函數什麼執行,沒有看到調用函數,則函數不執行.即函數名()

2.代碼從上到下依次執行.

3.調用函數:函數裡面從上至下依次執行

例8:通過舉例理解上面的內容,就好理解了

 

 4 關鍵字:global 和 nonlocal  (聲明變數)

global:

  1,在局部空間內,聲明一個全域變數。

  2,在局部範圍想要對全域範圍的全域變數進行修改時,需要用到 global(限於字串,數字)。

 例9:

如果不用global聲明,則外部是找不到內部的變數的.

如果聲明,則外部可以使用此變數

 2,在局部空間內改變一個全域變數

例10:

 

 nonlocal #將內部變數,引用到外部,不包括全域

1,不能修改全域變數。

 

2.在局部範圍中,對父級範圍(或者更外層範圍非全域範圍)的變數進行引用和修改,

並且引用的哪層,從那層及以下此變數全部發生改變。(只要在函數內,就可以引用到外層,只要出了函數,到全域下就錯誤)

 

總結:

global和nonlocal用法相同,nonlocal不能反用到全域下,global可以從局部到全域這樣使用.

Python 基礎第十天

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.