如果具有傳統編譯型語言的經驗,大家可能會對是否使用字典而猶豫不決,擔心字典的效率比列表或數組低。事實上Python字典的執行速度已經相當快了。Python語言的許多內部特性都依賴于字典,為提高字典的效率已經投入了大量的心血。Python的所有數據結構都經過了高度優化,因此不應該花太多時間去考慮哪個更快,哪個效率更高。
pass語句也可在Python中需要語句的其他任何地方使用。pass語句用作語句的占位符,但是它不執行任何操作:
if x < 5:passelse:x = 5
Python沒有提供case(或switch)語句。閱讀工作中的代碼,可以發現Switch/case語句在實際開發中使用頻率確實很低。
與其他Python對象一樣,函數也可以被賦值。函數可以被放入列表、元組或字典中。這個特性和C系列語言的函數指針類似。不過用起來更加簡約。真正將函數做到了對象一樣。
在大多數其他語言采用case或switch語句的場合,Python可以用串聯的if…elif…elif…else結構來很好地應對。如果遇到極少數棘手的場合,通常可用函數字典來解決,如下所示:
def do_a_stuff():#process adef do_b_stuff():#process bdef do_c_stuff():#processfunc_dict ={'a':do_a_stuff,'b':do_b_stuff,'c':do_c_stuff }X = 'a'func dict[x]()#運行字典中的函數
在使用變量之前,用global語句對其進行聲明,可以顯式地使其成為全局(global)變量。函數可以訪問和修改全局變量。全局變量存在于函數之外,所有將其聲明為全局變量的其他函數,以及函數之外的代碼,也可以對其進行訪問和修改。以下示例演示了局部變量和全局變量的差異:
def fun():global aa = 1b = 2
nonlocal語句與global語句類似,它會讓標識符引用最近的閉合作用域(enclosing scope)中已綁定的變量。
字符串的format函數可以實現類似C系列語言的格式化功能。
python的函數內部還可以定義函數。
g_var =0#inner_test 函數中的g_var 綁定為同名的頂級變量nl_var =0print("top level-> g_var: {0} nl_var: {1}".format(g_var, nl_var))def test():nl_var = 2#inner_test函數中的nl_var 綁定為 test 函數中的同名變量print("in test-> g_var: {0} nl_var:{1}".format(g_var, nl_var))def inner_test():#inner_test g_var 綁定為同名的頂級變量global g_var#inner_test函數中的nl_var 綁定為test 函數中的同名變量nonlocal nl_varg_var =1nl_var =4print("inner_test-> g_var: {0} nl_var:{1}".format(g_var, nl_var))inner_test()print("in test->g_var: {0} nl_var:{1}".format(g_var, nl_var))test()print("top level-> g_var: {0} nl_var:{1}".format(g_var, nl_var))