如果具有传统编译型语言的经验,大家可能会对是否使用字典而犹豫不决,担心字典的效率比列表或数组低。事实上Python字典的执行速度已经相当快了。Python语言的许多内部特性都依赖于字典,为提高字典的效率已经投入了大量的心血。Python的所有数据结构都经过了高度优化,因此不应该花太多时间去考虑哪个更快,哪个效率更高。
pass语句也可在Python中需要语句的其他任何地方使用。pass语句用作语句的占位符,但是它不执行任何操作:
if x < 5:
pass
else:
x = 5
Python没有提供case(或switch)语句。阅读工作中的代码,可以发现Switch/case语句在实际开发中使用频率确实很低。
与其他Python对象一样,函数也可以被赋值。函数可以被放入列表、元组或字典中。这个特性和C系列语言的函数指针类似。不过用起来更加简约。真正将函数做到了对象一样。
在大多数其他语言采用case或switch语句的场合,Python可以用串联的if…elif…elif…else结构来很好地应对。如果遇到极少数棘手的场合,通常可用函数字典来解决,如下所示:
def do_a_stuff():
#process a
def do_b_stuff():
#process b
def do_c_stuff():
#process
func_dict ={'a':do_a_stuff,
'b':do_b_stuff,
'c':do_c_stuff }
X = 'a'
func dict[x]()
#运行字典中的函数
在使用变量之前,用global语句对其进行声明,可以显式地使其成为全局(global)变量。函数可以访问和修改全局变量。全局变量存在于函数之外,所有将其声明为全局变量的其他函数,以及函数之外的代码,也可以对其进行访问和修改。以下示例演示了局部变量和全局变量的差异:
def fun():
global a
a = 1
b = 2
nonlocal语句与global语句类似,它会让标识符引用最近的闭合作用域(enclosing scope)中已绑定的变量。
字符串的format函数可以实现类似C系列语言的格式化功能。
python的函数内部还可以定义函数。
g_var =0
#inner_test 函数中的g_var 绑定为同名的顶级变量
nl_var =0
print("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_var
g_var =1
nl_var =4
print("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))