命名空間和函式基礎了解

2022-09-10 10:00:32 字數 3544 閱讀 9852

作用域

命名空間所能夠作用的範圍

內建命名空間

程式任何階段任何位置均可使用(全域性有效)、

全域性命名空間

程式任何階段任何位置均可使用(全域性有效)

區域性命名空間

一般情況下只在各自的區域性命名空間中有效

"""函式名遇到括號就會呼叫!!!"""

用法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 ...