def foo(x,y,*args,a=1,b,**kwargs):1 2(x,y)
(args)
(a)
(b)
(kwargs)
foo(1,2,3,4,5,b=8,c=4,d=5)
(3, 4, 5)18
*後定義的引數,必須被傳值(有預設值的除外),且必須按照關鍵字實參的形式傳遞
x=15def 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())
, '__builtins__': , '__file__': 'f:/back01/hansu.py', '__cached__': none, 'x': 1000, 'f1': , 'f3': }
max=16def 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)
1def
scope_test():
def
do_local():
spam
=
"local spam"
#此函式定義了另外的乙個spam字串變數,並且生命週期只在此函式內。此處的spam和外層的spam是兩個變數,如果寫出spam = spam + 「local spam」 會報錯
如果內部函式有引用外部函式的同名變數或者全域性變數,並且對這個變數有修改.那麼python會認為它是乙個區域性變數,又因為函式中沒有gcount的定義和賦值,所以報錯。
def
do_nonlocal():
nonlocal spam
#使用外層的spam變數
spam
=
"nonlocal spam"
def
do_global():
global
spam
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.位置引數永遠在關鍵字引數之前 作用域中查詢資料規則 優先查詢自...