十 函式高階

2021-09-20 05:12:55 字數 1977 閱讀 7769

形參中的動態引數

def func(a,b,*args,c='

f',**kwargs):

print

(a)

print

(b)

print

(args)

print

(c)

print

(kwargs)

func(9,2,3,4,45,6,c='

3',d=45,f='pp'

)#9 2(3, 4, 45, 6)

3

args  是把實參中多餘的的位置引數放到乙個元祖中     

kwargs  是把實參中多餘的關鍵字引數放到乙個字典中

最終的形參的排列順序:位置引數,*args,預設引數,**kwargs

*   在函式的呼叫執行時,輸入的引數為可迭代物件可以將元素意義新增到args

**  再函式呼叫執行時,可以將字典的所有的鍵值對放到乙個字典中給kwargs(這種方式的字典的鍵必須是字串)

def func(*args,**kwarg):

print(args)

print(kwarg)

dic1 =

dic2 =

func(*[2,3,4,4,5],*dic1,**dic2)

#(2, 3, 4, 4, 5, 2, '4')

命名空間一共分為三種:

全域性命名空間

區域性命名空間

內建命名空間

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

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

載入順序:內建命名空間(程式執行前載入)->全域性命名空間(程式執行中:從上到下載入)->區域性命名空間(程式執行中:呼叫時才載入)

取值順序:不能逆向取值

在區域性呼叫:區域性命名空間->全域性命名空間->內建命名空間

在全域性呼叫:全域性命名空間->內建命名空間

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

作用域

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

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

區域性作用域:區域性命名空間,只能在區域性範圍生效

globals()   locals()  的用法

a = 2

b = 3

def func():

c = 4

d = 5

print(globals())

print(locals())

func()

#, '__builtins__': , '__file__': 'h:/pycharm檔案/day10/課堂練習.py', '__cached__': none, 'a': 2, 'b': 3, 'func': }

將變數和對應的值用字典表示出來

global  在區域性變數中宣告乙個全域性變數  並且改變全域性變數

nonlocal   在函式巢狀中通過

在區域性作用域中,對父級作用域(或者更外層作用域非全域性作用域)的變數進行引用和修改,

並且引用的哪層,從那層及以下此變數全部發生改變。

c 高階十(虛函式)

1,什麼是虛函式 在類裡面使用vatrual修飾得函式稱為虛函式 2,先看下面乙個例子 宣告三個個類,其中child1,child2繼承於base,並且存在相同的函式disp 並且要實現display分別列印各個類的disp include using namespace std class bas...

python基礎(十) 函式高階

graphic 三角形 def chang graphic 正方形 def chang1 內部巢狀的函式命名可相同 graphic 圓形 print 第三層列印 graphic chang1 print 第二層列印 graphic chang 第三層列印 圓形 第二層列印 正方形 print 第一層...

十 python沉澱之路 高階函式初識

一 高階函式 分兩種 一種是返回值中包含函式體 另一種是把乙個函式體當作了引數傳給了另乙個函式 1 返回值中包含函式體 例1 1 deftest 2print 這是乙個測試 3return test 45 f test 6 f 1 這是乙個測試 2 這是乙個測試 例21 definward 2pri...