Python学习笔记——函数

函数 - 廖雪峰的官方网站

  • input()
x = input('Enter your name:')
print('Hello, ' + x)
  • def power(x, n=2): 这样,当我们调用power(5)时,相当于调用power(5, 2)

        默认参数可以简化函数的调用,必选参数在前,默认参数在后

        默认参数必须指向不变对象

  • 可变参数

        可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

        定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。

calc(nums[0], nums[1], nums[2])
calc(*nums)

        ↑简化,把list或tuple的元素变成可变参数传进去

  • 关键字参数

        关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

        它可以扩展函数的功能。

      

  •  命名关键字参数

        对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些,就需要在函数内部通过kw检查。

        

The pass Statement:

        The pass statement in Python is used when a statement is required syntactically but you do not want any command or code to execute. The pass statement is a null operation; nothing happens when it executes. The pass is also useful in places where your code will eventually go, but has not been written yet .

        if statements cannot be empty, but if you for some reason have an if statement with no content, put in the pass statement to avoid getting an error.

        和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

def person(name, age, *args, city, job):
    print(name, age, args, city, job)

        命名关键字参数可以有缺省值,从而简化调用:

def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)

        由于命名关键字参数city具有默认值,调用时,可不传入city参数: 

>>> person('Jack', 24, job='Engineer')
Jack 24 Beijing Engineer
  • 参数组合

        在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

        对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。


  • 阶乘 fact(n) 
  • 解决递归调用栈溢出的方法是通过尾递归优化

        尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

        遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以,即使把上面的fact(n)函数改成尾递归方式,也会导致栈溢出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值