?
?
import functools
#偏函數
def demo(a,b,c,d):print(a,b,c,d)# def partital_demo(a,b):
# demo(a,b,3,4)
# partital_demo(1,2)#實現偏函數
# #固定前兩個
# demo = functools.partial(demo,5,6)
# demo(10,50)# #固定后兩個
# demo=functools.partial(demo,c=3,d=5)
# demo(1,2)#固定任意參數
demo= functools.partial(demo,b=5,c=6)
demo(a=1,d=1)# 變量作用域:能夠引用變量的代碼段就叫做這個變量的作用域
# 1 if while try-except 這些不引入新的作用域
# if 3 > 0:
# a = 1
# print(a)# 全局作用域:在所有的函數外定義變量
# 范圍:從定義開始,到本文件結束 中間處處可見a = 3def demo():a = 5print("demo", a)a = 5 # 局部作用域,局部變量;范圍:整個函數體print(a)demo()
print(a)# 內部函數
def test():c = 10 # 閉包作用域 :從定義開始到結束# 內部函數def inner(): # 作用域是局部作用域b = 10print("inner", b)inner()inner() # 不能在外部引用內部函數 報錯test()# 內建作用域:所有文件可用,系統函數、變量都是內建作用域
print(max(1,2,3))
#
# n內鍵作用預> 全局作用域>閉包作用域>局部作用域a = 3
c = 6
def outter():a = 1b = 3print("outter",a,b)def inner():b = 5print("inner",b)print("c=",c)print("a=",a)inner()# 變量查找規則:從變量引用的地方開始向上找,找離他最近的變量
outter()# 在函數里無法直接修改全局變量
a = 10
print(id(a))
def test():global a #告訴python解釋器,以下引用的是全局變量,并可以修改# a+=1# print(id(a))a = 10print(id(a))print(a) #6
test()
print(a) #6def outter():c= 10def inner():nonlocal c #專門用于修改閉包作用域c+=1 #不允許直接修改閉包作用域的變量print(c)inner()
outter()def outter():#外部函數a = 1def inner(): #內部函數print(a)inner()
outter()#
# def outter():#外部函數
# a = 1
# def inner(): #內部函數
# print("inner",a)
# return inner
# #得到內部函數地址
# res = outter()
# res() #調用內部函數
#要增強功能的函數
def eat():print("我喜歡吃水果")#裝飾器
# 參數:必須要把增強的函數傳進來
def magic(func):def inner():func() #調用原來的函數#增強的功能print("我喜歡吃炸雞")print("我喜歡吃山珍海味")return inner
eat = magic(eat)
eat()#裝飾器
# 參數:必須要把增強的函數傳進來
def magic(func):def inner():func() #調用原來的函數#增強的功能print("我喜歡吃炸雞")print("我喜歡吃山珍海味")return inner
@magic #@外部函數 eat = magic(eat)
#要增強功能的函數
def eat():print("我喜歡吃水果")
eat()#裝飾器
# 參數:必須要把增強的函數傳進來
def magic(func):def inner(tmp):func(tmp) #調用原來的函數#增強的功能print("我喜歡吃炸雞")print("我喜歡吃山珍海味")return inner
@magic #@外部函數 eat = magic(eat)
#要增強功能的函數
def eat(food):print("我喜歡吃{}".format(food))
eat("臭豆腐")#裝飾器
# 參數:必須要把增強的函數傳進來
def check_login(func):def inner(password):if password == '123':func(password)#執行原來功能else:print("密碼錯誤,重新輸入")return inner #外部函數的返回值@check_login #@外部函數 forum = check_login(forum)
#要增強功能的函數
def forum(password):print("發帖:印度")@check_login
def comment(password):print("韓國人更厲害")forum('123')
?