順序
:位置引數
->動態接收位置引數
*->預設值
->動態接收關鍵字引數
**位置引數
->*args->預設引數值
->**kwargs
一.函式引數--動態傳參
1.動態接受位置引數
在引數位置編寫
*表示接收任意內容
動態接收引數的時候要注意
:動態引數必須在位置引數後面
2.動態接收關鍵字引數
動態接收關鍵字引數一定在最後面
在實參位置使用
*或**,他們是用來打雜湊表和字串的
二.命名空間,區域性命名空間,作用域,載入順序
在python直譯器開始執行之後
, 就會在記憶體中開闢乙個空間
, 每當遇到乙個變數的時候
, 就把變數名和值之間的關係記錄下來
, 但是當遇到函式定義的時候
, 直譯器只是把函式名讀入記憶體
, 表示這個函式存在了
,至於函式內部的變數和邏輯
, 直譯器是不關心的
. 也就是說一開始的時候函式只是載入進來
, 僅此而已
, 只有當函式被呼叫和訪問的時候
, 直譯器才會根據函式內部宣告的變數來進行開闢變數的內部空間
. 隨著函式執行完畢
, 這些函式內部變數占用的空間也會隨著函式執行完畢而被清空
命名空間的分類:
1. 全域性命名空間--> 我們直接在py檔案中, 函式外宣告的變數都屬於全域性命名空間
2. 區域性命名空間--> 在函式中宣告的變數會放在區域性命名空間
3. 內建命名空間--> 存放python直譯器為我們提供的名字, list, tuple, str, int這些都是內建命名空間
載入順序:
1.內建命名空間
2.全域性命名空間
3.區域性命名空間
取值順序:
1.區域性命名空間
2.全域性命名空間
3.內建命名空間
作用域:作用域就是作用範圍, 按照生效範圍來看分為全域性作用域和區域性作用域
全域性作用域:
包含內建命名空間和全域性命名空間. 在整個事件的任何位置都可以使用(遵循從上到下逐行執行).
區域性作用域:
在函式內部可以使用.
作用域命名空間:
1.全域性作用域:全域性命名空間+ 內建命名空間
2.區域性作用域:區域性命名空間
函式:globals()和locals()
globals():用來檢視全域性作用域的變數和函式資訊
locals():用來檢視區域性作用域的內容(它在哪一層,就看哪一層的變數和函式資訊
3.函式的巢狀
1.只要遇見()就是函式的呼叫,如果沒有()就不是函式的呼叫
2.函式的執行順序
4.gloabal,nonlocal關鍵字
gloabal:表示不在區域性建立這個變數了,而改用全域性變數
nonlocal:表示在區域性作用域中呼叫父級空間的變數(不能呼叫到全域性變數,即使它只有一層)
day10 函式高階
1.1什麼是返回值 返回值就是從函式內部傳遞到函式外部的資料 預設情況下函式內部產生的新資料,在函式外部不能使用 1.2怎麼確定函式返回值 1 python中每個函式都有返回值,預設情況下是none,返回值是什麼就看執行函式體的時候遇到的return關鍵字後面的資料是什麼 如果沒有遇到return,...
Day 10 函式的高階
一 動態傳參 1 形參 1.位置引數 2.預設引數 3.動態引數 1.args 動態接收位置引數 2.kwargs 動態接收關鍵字引數 def chi food print 我要吃 food chi 大公尺飯 小公尺飯 結果 我要吃 大公尺飯 小公尺飯 多個引數傳遞進去.收到的內容是元組tuple ...
day 10 函式的高階
動態傳參 重點 形參 args在形參位置,表示不定引數 接受的是位置引數 接受到的位置引數的動態傳參 都是元組 形參的順序 位置 args 預設值 kwargs 以後寫引數,可以隨意的進行搭配 def chi zhushi,cai,fushi,tang,tiandian print zhushi,c...