python -- 函数总结

来源:互联网 发布:淘宝刷两单会坐牢吗 编辑:程序博客网 时间:2024/06/05 20:13

关键字参数

  • 关键字参数就是在实参前面加上形参 = ,让该实参传给固定的实参
def f (name, words):    print (name+"->"+words)f(words = "haha", name = "fengs")

默认参数

  • 默认参数就是给实参一个默认值, 如果调用函数时不传参, 那么就运行默认参数, 如果传参, 那么就和普通的一样
def f (name = "xiaoming", words = "haha"):    print (name+"->"+words)f()
def f (name = "xiaoming", words = "haha"):    print (name+"->"+words)f(name = "xiaofeng", words = "heihei")

收集参数

  • 收集参数, 就是当你不知道要传多少个参数的时候, 可以设置为收集参数, 就是在形参前面加*,
def f (*params):    print ("你传的形参个数是:", len(params))f(1, 2, 3, 4, 5, 6,)
  • 这时候如果你形参后面还有参数, 就要使用关键字参数了, 一般后面的参数是默认参数。比如:print()函数

函数变量作用域

  • 全局变量和局部变量的作用域这里就不多解释了, 传送门:python变量和作用域
  • 在函数在可以调用全局变量, 但是不能直接修改, 如果你直接修改就实际上修改的不是全局变量,
    • 具体是这样的: 当python检测到你要直接在函数中修改全局变量时, 它会自动新建一个局部变量, 名字与全局变量一致, 然后修改该局部变量。
    • 如果你非要在函数中修改全局变量, 可以global

内嵌函数

  • 简单的说就是就是在函数内部又定义了一个函数
def Fun1 ():    x = 5    def Fun2(y):        nonlocal x        x *= y        return x    return Fun2(3)print (Fun1())
  • 其实和全局变量在函数中的引用差不多, 外部函数定义的变量在内部函数中只能引用, 不能直接修改, 如果非要修改, 请用nonlocal关键字指明该变量是外部函数的, 其实和global是一个道理

闭包

  • 闭包的内容可以参见 传送门:什么是闭包
  • 理解下面两个程序
def make_adder(addend):    def adder(augend):        return augend + addend    return adderprint (make_adder(23)(100))print (make_adder(44)(100))

def make_adder(addend):    def adder(augend):        return augend + addend    return adder(100)print (make_adder(23))print (make_adder(44))

匿名函数(lambda表达式)

比如:求两个数的和的函数

def add(x, y):    return x+yprint (add(3, 4))

可以简写为

g = lambda x, y: x + yprint (g(3, 4))
  • 简单说一下 lambda 的构成:
    • 1, 冒号前面的是函数的参数, 可以为一个或者多个或者没有
    • 2, 冒号后面的为函数返回值
    • 3, lambda 别忘了
  • 使用匿名函数的好处:
    • 第一个就是不用想函数名, 因为匿名。。。
    • 第二是程序看起来更加简洁
  • 得到匿名函数的返回值之后你就可以像普通函数一样调用了,
  • 但是匿名函数有个限制,就是只能有一个表达式,不需要写return,函数返回值就是该表达式的结果。
  • 更多匿名函数的问题请参见 传送门:python匿名函数详解
原创粉丝点击