zoukankan      html  css  js  c++  java
  • Python中的函数

    1.函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
     
    >>> a = abs # 变量a指向abs函数
    >>> a(-1) # 所以也可以通过a调用abs函数1
    可以将任意函数名字改名。
     
    2.定义一个函数要使用def语句,同时要有冒号,函数体放在缩进里面。
     
    3.如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。
     
      return None可以简写为return。
     
    4.定义一个什么事也不做的空函数,可以用pass语句。还没想好怎么写函数的代码,就可以先用pass代替,让代码先运行起来。
     
    5.Python的函数返回多值其实就是返回一个tuple。
     
    6.默认参数:由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2:
     
    def power(x, n=2):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s
    这样,当我们调用power(5)时,相当于调用power(5, 2):
     
    7.当不按顺序提供部分默认参数时,需要把参数名写上。
     
    8.定义默认参数要牢记一点:默认参数必须指向不变对象!
     
    9.把函数的参数改为可变参数:
    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。
     
    10.Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
     
    11.尾递归优化,尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
    return fact_iter(num - 1, num * product)#即返回函数本身
     
    来自廖雪峰
  • 相关阅读:
    堆的创建、优先队列、topk、堆排序C语言实现
    HTTPS加密原理
    go shard map实现
    Python进程间通信
    TCP 半连接队列和全连接队列
    WireShark过滤语法
    TCP拥塞机制
    【企业管理实务系列】低值易耗品管理办法
    CV之Face Change:基于人工智能实现国内众多一线美女明星换脸(基于Face++输出4*106个特征点定位+融合代码、deepfake技术)
    【转发】农行银企直联XML对接socket SAP EPIC
  • 原文地址:https://www.cnblogs.com/JackKing-defier/p/4671979.html
Copyright © 2011-2022 走看看