python -- 函数总结

关键字参数

  • 关键字参数就是在实参前面加上形参 = ,让该实参传给固定的实参
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 adder

print (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+y
print (add(3, 4))

可以简写为

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值