Python 函数及其应用

2018-07-25 13:12:39来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Python函数:

  一个具有独立功能的代码块,重复使用时,那么往往就需要使用函数把这块代码封装成一个整体。


一、定义函数:

  def 函数名():
  函数代码
  定义一个函数,函数不会执行,要执行需要调用函数

二、调用函数:

  函数名()
  函数定义一次,可以多次被调用

  demo:
    def printHelp():
      print('='*30)
      print(' 学生管理系统')
      print('1.添加学生信息')
      print('2.删除学生信息')
      print('3.修改学生信息')
      print('4.查询学生信息')
      print('5.显示学生信息')
      print('0.退出系统')
      print('='*30)
    printHelp()

三、返回值:

  一个函数执行完成以后,把一个结果拿给调用者 ,只能返回一个值


  return : 1.可以把一个结果返回给调用者
            2.结束一个函数

  注意:如果一个函数中编写了多个return,程序不会出现语法错误,
  只要第一个return执行了,这个函数就结束了

四、全局变量与局部变量

  全局变量:

    在函数外面定义的变量就是全局变量
    全局变量一般不能直接在函数内部被更改
    如果要更改,可以用:global + 变量名

  局部变量:

    在函数里面定义的变量就是局部变量
    形参是局部变量

五、不定长参数

  demo:
    #不带名字的参数将作为一个元素传给*args,形成一个元组
    #带名字的参数将作为一个元素传给**kwargs,形成一个字典

    def test(a,b,*args,**kwargs):
      print(a)
      print(b)
      print(args)
      print(kwargs)

    test(11,22,33,44,55,66,77,88,mm = 11,nn =33)
    print('-' * 50)

    #当列表/元组在当做实参传递的时候,如果前面有一个*,表示对其进行解包
    #意思是:[111,222,333] ---> 111,222,333
    #当字典当做一个实参进行传递的时候,如果前面有两个*,表示对其进行解包
    #意思是:{’aa':100,'bb':200} ---> a = 100,b = 200
    A = [11,22,33]
    B = {'aa':100,'bb':200}

    test (11,22,*A,**B)#等价于(11,22,11,22,33,aa = 100,bb = 200)
    print('-' * 50)

    test(11,22,A,new = B)

六、递归:

  #demo 1 阶乘递归

  def test(num):
    if num > 1:
      return num * test(num-1)
    else:
      return 1

  i = int(input('请输入一个数字:'))

  print(test(i))


  #demo 2 汉诺塔

  #有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,

  要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子

  上方,请问至少需要多少次移动?

 

  def move(n,a,b,c):
    if n == 1:
      print(a,'----->',c)
    else:
      move(n-1,a,c,b)
      move(1,a,b,c)
      move(n-1,b,a,c)

  move(4,'A','B','C')

七、匿名函数

  def sum(a,b):
    return a + b
  #等价于
  sum = lambda a,b: a + b

八、内建函数

  1.map(函数,可迭代对象)#进行对应操作
    例如:map(lambda x : x * x,[1,2,3])
  2.filter(函数,可迭代对象)#过滤,函数返回布尔值
    例如:filter(lambda x: x%2,[1,2,3,4])
  3.reduce(函数,可迭代对象)#累计值
    例如:reduce(lambda x,y: x+y,[1,2,3,4])
         reduce(lambda x,y:x+y,['aa','bb','cc'],'dd')
         #结果为’ddaabbcc'
  4.sorted(可迭代对象)#排序,倒序加reverse = True

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python--map()、reduce()

下一篇:Python真的无所不能,没有做不到的!OpenCV加Docker实时目标检测