函式引數,作用域

2022-08-11 02:00:25 字數 2675 閱讀 1746

def foo(x,y,*args,a=1,b,**kwargs):

print

(x,y)

print

(args)

print

(a)

print

(b)

print

(kwargs)

foo(1,2,3,4,5,b=8,c=4,d=5)

1 2

(3, 4, 5)18

*後定義的引數,必須被傳值(有預設值的除外),且必須按照關鍵字實參的形式傳遞

x=1

def f1():

x=5 #f1的區域性

def f2():

# x=4 #f2的區域性

print(x)

print(locals())

return f2 #返回函式名,位址

x=100

def f3(func):

x=2 #f3的區域性

func()

x=1000 #全域性

f3(f1())

print(globals())

5

, '__builtins__': , '__file__': 'f:/back01/hansu.py', '__cached__': none, 'x': 1000, 'f1': , 'f3': }

max=1

def f1():

max=2

def f2():

# max=3

def f3():

# global max #max=1 等於修改全域性變數

nonlocal max #max=2 等於修改區域性變數

max=max+4

print(max)

f3()

f2()

f1()

print(max)

6

1defscope_test():

defdo_local():

spam="local spam"#此函式定義了另外的乙個spam字串變數,並且生命週期只在此函式內。此處的spam和外層的spam是兩個變數,如果寫出spam = spam + 「local spam」 會報錯

如果內部函式有引用外部函式的同名變數或者全域性變數,並且對這個變數有修改.那麼python會認為它是乙個區域性變數,又因為函式中沒有gcount的定義和賦值,所以報錯。

defdo_nonlocal():

nonlocal  spam#使用外層的spam變數

spam="nonlocal spam"

defdo_global():

globalspam

spam="global spam"

spam="test spam"

do_local()

print("after local assignmane:", spam)

do_nonlocal()

print("after nonlocal assignment:",spam)

do_global()

print("after global assignment:",spam)

scope_test()

print("in global scope:",spam)

輸出是:

after local assignmane: test spam

after nonlocal assignment: nonlocal spam

after global assignment: nonlocal spam

in global scope: global spam

函式 引數 變數作用域

一 函式引數 1.必須引數 必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。呼叫printme 函式,你必須傳入乙個引數,不然會出現語法錯誤 小括號內的就是引數 小括號內沒東西叫做無參,有叫有參 求任意三個數之和 在定義函式的時候小括號內寫的是變數名字,不需要賦值 在呼叫函式的時候小...

函式的引數作用域

注意理解 1 var x 1 function f x,y x f 2 2 2 let x 1 function f y x f 1 3 function f y x f referenceerror x is not defined 4 var x 1 function foo x x foo r...

python 函式 引數 作用域

注意 一般 args與 kwargs一起使用,這是超級無敵萬能引數 1.常見形參模式 def func1 a1,a2 pass def func2 a1,a2 none pass def func3 args,kwargs pass 2.位置引數永遠在關鍵字引數之前 作用域中查詢資料規則 優先查詢自...