函数1

xiaoxiao2021-02-28  94

# 函数在执行过程中一旦遇到return,函数就执行完毕,并将结果返回。 # 函数在执行过程中没有遇到return时,返回值None. def hello():     return 'hello'     print 'fentiao' # 如果要定义一个什么也不做的空函数时,可以用pass语句,作为一个占位符,让代码先运行起来。 def world():     pass print hello() # 函数的参数检查 # def my_abs(x): #     if not isinstance(x,(int,float)): #         print "请输入整形或浮点型" #     return abs(x) # # print my_abs(123) def my_abs(x):     if type(x) !=  int or type(x) != str:         print "请输入整形或浮点型"     return abs(x) print my_abs(123) # 函数返回多个值,实质上是返回一个元组tuple,返回时元组可以省略括号, # 函数调用接收返回值时,按照位置赋值给变量, def func(x,y):     if not isinstance(x,int) or not isinstance(y,int):         print 'Error Type'     avg = sum((x,y))/2     maxnum = max(x,y)     # return "平均值:[%d],\t最大值:[%d]," %(avg, maxnum)     return (avg,maxnum) myavg, mymax = func(2,10) print myavg, mymax # 默认参数,必选参数同时存在函数中存在时,一定要将必选参数放在默认参数前面; # 设置默认参数时,把变化大的参数放前面,变化小的参数放后面,变化小的参数可以设置为默认参数。 def power(x,n=2):     return x**n print power(2,3) def enroll(name, age=22, myclass="西部开源运维班"):     print 'name:'+name     print 'age:%d' % age     print 'class:'+ myclass enroll('lilei') enroll('xiaoyao',18) enroll('fentiao',6,'全能班') # fun([1,2,3])  ---> [1,2,3,END] # fun()       --->   [END] # # def fun(): # 默认参数必须是不可变数据类型 def fun1(li=None):     if li is None:         return ['END']     li.append('END')     return li def fun(li = []):     if len(li) == 0:         return ['END']     li.append('END')     return li print fun([1,2,3]) print fun() print fun() # 可变参数/位置参数 # 定义函数时,形参可以为*args,使函数可以接收多个参数,接收的数据类型为元组; # 如果想将一个列表或者元组传入函数,也可通过*li 或 *t,将参数传入函数里。 def fun(*args):     print type(args)     return max(args),min(args)

li  = 1,42,3,14,58,6

print fun(*li) # 关键字参数 def enroll(name, age=22, **kwargs):     print 'name:' + name     print 'age:%d' % age     for k, w in kwargs.items():         print '%s : %s' % (k, w) dic = {'myclass':'运维班',"gender":'male'} enroll('fentiao', **dic) # 参数定义的顺序:必选参数 > 默认参数 > 可变参数 > 关键字参数 # *args,可变参数,args接收的是tuple. # **kwargs,关键字参数,kwargs接收的是字典. def enroll(name, age=22, **kwargs):     print 'name:' + name     print 'age:%d' % age     for k, w in kwargs.items():         print '%s : %s' % (k, w) dic = {'myclass':'运维班',"gender":'male'} enroll('fentiao', **dic) ''' b = 2               # 全局变量,在整个代码中生效 def a():     global  b     b=1           # 局部变量,只在函数内生效     print b a()

print b

#****************************    1. 递归函数    ******************************** # # n! = 1x2x3x4x.......(n-1)xn= (n-1)!xn = (n-2)!x(n-1)xn # # 1!    =     1 # 2!    =     (2-1)! x 2                      =    fact(2-1) x 2 # 3!    =     (3-1)! x 3  = (2-1)! x 2 x 3    =    fact(3-1) x 3   =   fact(1)x 2 x3 def fact(n):     if not isinstance(n,int):         print 'input int num'     if n == 1:         return 1     return fact(n-1)*n print fact(3) # 1. 在写递归函数时要有一个明确的结束条件; # 2. 在递归时,问题规模要越来越小; # 3. 递归函数效率不高,函数调用是通过栈的数据结构实现的, #   每调用依次,栈就会多一层,最多999层,否则会出现栈溢出。 # 实现二分的效果      # n = 10 # 返回值为: #           5 #           2 #           1 def fun(n):     if not isinstance(n,int):         print 'Error Type'     print n     b = int(n/2)     if b > 0:         return fun(b) fun(18) #****************************    2. 函数式编程    ************************ # 面向对象编程语言:java,c++, python # 面向过程编程语言:c # 面向函数编程语言(lisp,erlang): f = y(x,y) (13+10)*2-8 面向过程:     a = 13 + 10     b = a * 2     c = b -8 面向函数:     result = jian(multipy(add(13,10),2),8) #****************************    3. 高阶函数    ************************ # 函数可以当作参数去传递 def fun1(x,y,fun):     return fun(1,2) print  fun1(1,2,max)

转载请注明原文地址: https://www.6miu.com/read-80099.html

最新回复(0)