Study Python笔记03 — 函数

Published on with 452 views

其实与Java、php基本类似,不过python设计得更简洁、灵活度更高。

[hermit auto=“0” loop=“0” unexpand=“1” fullheight=“0”]netease_songs#:541687281[/hermit]

以下为python中函数书写实例:

# -- coding: utf-8 --
def my_abs(x): #定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号

if x >= 0:
return x
else:
return -x

可变参数

可变参数就是传入的参数个数是可变的

其实与定义一个list或tuple参数差不多,只不过在参数前面加了一个*号,在函数调用时自动组装为一个tuple,def calc(*numbers):

关键字参数

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

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

命名关键字参数

作用:限制关键字参数的名字。命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

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

调用方式如下:

>>> person('Jack', 24, city='Beijing', job='Engineer') Jack 24 Beijing Engineer

参数组合定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

递归函数

经典递归:

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

尾递归:

def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)


Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。

Responses