作用域命名空間所能夠作用的範圍
內建命名空間
程式任何階段任何位置均可使用(全域性有效)、
全域性命名空間
程式任何階段任何位置均可使用(全域性有效)
區域性命名空間
一般情況下只在各自的區域性命名空間中有效
"""函式名遇到括號就會呼叫!!!"""函式的鑲嵌呼叫用法1:函式名可以當做變數名賦值
def index():
print('from index')
a = index
a() # 本質就是在呼叫index函式
用法2:函式名還可以當做函式的實參
def index():
print('form index')
def func(a):
print(a)
a()print('from func')
func(index)
用法3:函式名還可以當做函式返回值
def index():
print('from index')
def func():
print('from func')
return index
res =func #呼叫func並接受func的返回值
res()
用法4:函式名可以當做容器型別(內部可以存放多個資料)的元素
def index():
print('from index')
l = [111, 222, 333, index()] # [111, 222, 333, none]
print(l)
def register():
print('註冊功能')
def login():
print('登入功能')
def shopping():
print('購物功能')
def transfer():
print('轉賬功能')
def withdraw():
print('提現功能')
def check_order():
print('檢視訂單')
func_dic =
while true:
print("""
1.註冊功能
2.登入功能
3.購物功能
4.轉賬功能
5.提現功能
6.檢視訂單
""")
choice = input('請輸入功能編號》:').strip()
# 判斷使用者輸入的編號在不在字典的k中
if choice in func_dic:
# 根據鍵獲取值(函式名)
func_name = func_dic.get(choice)
# 函式名加括號呼叫
func_name()
else:
print('功能編號不存在')
# 下列**的弊端在於功能較多時 **過於複雜
# if choice == '1':
# register()
# elif choice == '2':
# login()
# elif choice == '3':
# shopping()
# else:
# print('寫累了')
巢狀呼叫:函式內部呼叫其他函式def index():
print('from index')
def func():
index()
print('from func')
func()
def my_max(a,b):
if a > b:
return a
return b
def many_max(x,y,z,m):
res = my_max(x,y)
res1 = my_max(res,z)
res2 = my_max(res1,m)
return res2
ret = many_max(1,2,3,4)
print(ret)7
函式體內部定義其他函式將複雜的功能全部隱藏起來 暴露乙個簡單的介面
def all_func(type):
def register():
print('註冊功能')
def login():
print('登入功能')
def transfer():
print('轉賬功能')
def shopping():
print('購物功能')
# 這裡僅僅是延時巢狀定義的現象 暫不考慮優化
if type == '1':
register()
elif type == '2':
login()
elif type == '3':
transfer()
elif type == '4':
shopping()
else:
print('不知道啥功能')
all_func('3')
"""裝飾器並不是乙個新的知識
而是有我們之前所學習的 命名空間函式物件 閉包函式組合而來
"""器:指的是工具
裝飾:給被裝飾物件新增額外的功能
裝飾器的原則
開放封閉原則
開發:對擴充套件開放
封閉:對修改封閉
裝飾器核心思想
在不改變被"裝飾物件內部**"和"原有呼叫方式"的基礎之上新增額外功能
def index():
print('from index')
index()
# 統計index函式的執行時間
import time
# print(time.time()) # 1637036293.0609405
# 獲取的結果叫時間戳(執行**的那一刻距離1970-1-1所經歷的秒數)
# time.sleep(3) # 讓程式原地等待3秒
# print('睡飽了')
def index():
time.sleep(3)
print('from index')
# 統計index函式的執行時間
# 在函式執行之前統計一次時間
start_time = time.time()
index()
# 在函式執行完畢之後再次統計
end_time = time.time()
# 計算差值
了解命名空間
命名空間的作用 解決檔案中引用另乙個檔案時存在相同類名,函式名以及常量名的問題,比如test.php檔案如下 然後在test1.php中載入這個檔案 如果兩者的命名空間相同,包括兩者都沒有設定命名空間的情況下,執行test1.php會報衝突,因為兩個檔案有相同的類test,這是不被允許的,然而命名空...
命名空間和函式原型
今天學了c primer plus上的第二章,主要講了c 的一些基本概念和操作。由於之前學過其他語言,看起來相對輕鬆。其中收穫最大是關於 命名空間 和 函式原型 的內容 一 命名空間 命名空間支援是c 的乙個特性。以std為例 std 是個命名空間識別符號,c 標準庫中的函式或者物件都是在命名空間s...
函式物件和命名空間
函式 函式時第一類物件 1.函式名可以被引用 2.函式名可當作引數去使用 3.函式名可以當作返回值使用 傳參時,如果無特殊需求,一定不能加 否則就當場執行 def index print from index def func a return a a func index a 執行結果 from ...