1.命名關鍵字參數
格式:在*後面的參數都是命名關鍵字參數
特點:
1.必須被傳值
2.限制函數的調用者必須按照key=value的形式傳值
3.限制函數的調用者必須用我們指定的key名
1 def auth(*args,**kwargs):
2 """
3 使用方式auth(name="egon",pwd="123")
4 :param args:
5 :param kwargs:
6 :return:
7 """
8 # print(args,kwargs)
9 if len(args) !=0:
10 print('必須用關鍵字的形式傳參')
11 return
12 if 'name' not in kwargs:
13 print('必須用指定的key名name')
14 return
15 if 'pwd' not in kwargs:
16 print('必須用指定的key名pwd')
17 return
18
19 name=kwargs['name']
20 pwd=kwargs['pwd']
21 print(name,pwd)
2.函數嵌套
1.函數的嵌套調用:在函數内又調用了其他函數
def max(x,y):
if x>y:
reryrn x
else:
return y
def max3(x,y,z):
res1 = max2(x,y)
res2 = max2(rea1,z)
return res2
print(max3(11,199,2))
2,函數的嵌套定義:在函數内又定義了其他函數
def func1():
print('from func1')
def func2(): #func2=記憶體位址
print('from func2')
func1()
def f1():
print('f1')
def f2():
print('f2')
def f3():
print('f3')
f3()
f2()
f1()
'''
f1
f2
f3
'''
3.名稱空間和作用域
1.名稱空間:存放名字和值綁定關系的地方
1.2.名稱空間分類:
1.2.1内置名稱空間:存放python解釋器自帶的名字,在解釋器啟動時就生效,解釋器關閉則失效
1.2.2全局名稱空間:檔案級别的名字,在執行檔案的時候生效,在檔案結束或者在檔案删除的時候失效
1.2.3局部名稱空間:存放函數内定義的名字(函數的參數以及函數内名字都存放在局部變量空間)---在函數調用時臨時生效,函數結束則失效
加載順序:内置名稱空間-----全局名稱空間---局部名稱空間
查找名字:局部名稱空間-----全局名稱空間-----内置名稱空間
2:作用域
1.全局變量域:包含的是内置名稱空間與全局名稱空間的名字
特點:
在任何位置都能通路到
該範圍内的名字會伴随程式整個生命周期
2.局部作用域:包含的是局部名稱空間的名字
特點:
隻能在函數内使用
調用函數是生效,調用結束失效
4,函數對象
1,函數可以被引用
def bar():
print('from bar')
f =bar
f()
2,可以當作參數傳入
def bar():
print(’from bar‘)
def wrapper(func):
func()
wrapper(bar)
3,可以當作函數的傳回值
def bar():
print(’from bar‘)
def foo(func):
return func
f = foo(bar)
f()
4,可以當作容器類型的元素
def get():
print('from get')
def put():
print('from put')
l=[get,put]
print(l)
l[0]()
def auth():
print('登陸。。。。。')
def reigster():
print('注冊。。。。。')
def search():
print('檢視。。。。')
def transfer():
print('轉賬。。。。')
def pay():
print('支付。。。。')
dic={
'1':auth,
'2':reigster,
'3':search,
'4':transfer,
'5':pay
}
def interactive():
while True:
print("""
1 認證
2 注冊
3 檢視
4 轉賬
5 支付
""")
choice=input('>>: ').strip()
if choice in dic:
dic[choice]()
else:
print('非法操作')
interactive()
5,閉包函數
定義在函數内部的函數,并且該函數包含對外部函數作用域中名字的引用,該函數就成為閉包函數
def outter():
name='egon'
def inner():
print('my name is %s' %name)
return inner
inner()被稱為閉包函數。
inner()定義在函數outter外部,outter函數的作用域内部變量name,在inner内被引用
轉載于:https://www.cnblogs.com/guodengjian/p/8665479.html