一般的函数:
1 # Author:yebo 2 3 #函数: 4 def func1(): 5 """testing 1""" 6 print("in the func1") 7 return 0 8 9 #过程: 10 def func2(): 11 """testing 2""" 12 print("in the func2") #在python中:过程就是没有返回值的函数 13 14 x = func1() 15 y = func2() 16 17 print("from func1 return is %s" %x) 18 print("from func2 return is %s" %y)
*args和 **kwargs:
1 # Author:yebo 2 3 def func(arg1, arg2, arg3, *args, **kwargs): # *args把多的变成tuple,**kwargs则是转成dict 4 print(arg1, arg2, arg3, args, kwargs) #注意print和def中有无*的区别 5 6 func(3,4,5,6,7,8,9,10 ,11,12,13,14,15,16,name = 'yebo',age = 21)
全局变量与局部变量:
1 # Author:yebo 2 3 school_name = "zhounan" 4 names = ["yebo", "shuzzz", "yomi"] 5 6 def change_name(): 7 school_name = "sues" 8 names[2] = "baby7" 9 print(school_name) 10 11 change_name() #局部变量 12 print(school_name) #全局变量 13 print(names) #全局变量如果是列表字典这类复杂形势,函数中则可以改动
递归:
1 # Author:yebo 2 3 def calc(n): 4 print(n) 5 if int(n/2) > 0: 6 return calc(int(n/2)) 7 print("--->",n) 8 9 calc(10)
匿名函数:
1 # Author:yebo 2 3 calc = lambda x:x*3 4 5 print(calc(3))
高阶函数:
1 # Author:yebo 2 3 import time 4 5 def time_calc(func): 6 start_time = time.time() 7 func() 8 stop_time = time.time() 9 print("The run time is %s" % (stop_time - start_time)) 10 11 def bar(): 12 time.sleep(3) 13 14 time_calc(bar)