Python学习笔记二:函数

学习资源:廖雪峰Python教程

教程链接点击此处

重点记录与c,java有区别的知识点,红色部分重点注意。


二、函数


1.函数调用


可以把函数名赋给一个变量,相当于给这个函数起了一个别名:

a = abs #abs是绝对值函数
a(-1) #输出1

2.定义函数


①定义一个函数需要使用def语句
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
②空函数
def none():
    pass
③返回多个值
def fun(a,b):
    return a + b, a - b

x, y = fun(2, 3) 
x,y分别打印5,-1。实际上返回的还是单一的值,只不过是一个tuple。一个tuple中的值可以依次赋给多个变量


3.函数的参数

①位置参数
def fun(a, b, c)
    print(a, b, c)

fun(1, 2, 3) #调用函数示例

调用函数时,传入的两个值按位置顺序依次赋给a,b

② 默认参数
def fun(a, b = 2, c = 3)
    print(a, b, c)

fun(1) #调用函数示例1
fun(1, c = 5) #调用函数示例2
不按参数顺序提供默认参数时,需把参数名写上
必选参数在前,默认参数在后,否则会报错,默认参数 必须指向不变对象

③可变参数
def calc(*nums)
    sum = 0
    for n in nums:
        sum = sum + n
    return sum
在参数前加一个 * 号,此时可以传入任意个参数,nums实际上 接受到的是一个tuple
把lsit或者tuple前加一个 * 号,变成可变参数传递:
nums = [1, 2, 3]
calc(*nums) #调用函数示例
④关键字参数
与可变参数将多个参数组装成一个tuple不同, 关键字参数将多个参数组装成一个dict
def person(name, age, **kw):
    pass

person('djs', 23, city = 'Chongqing') #调用函数示例1
person('djs', 23, city = 'Chongqing',gender = 'M') #调用函数示例2

extra = {city : 'Chongqing', gender : 'M'}
person('djs', 20, **extra) #调用函数示例3
调用函数时,需传入参数名

⑤命名关键字参数
命名关键字参数需要一个分隔符 * 号,* 号后面的参数视为命名关键字参数,限制关键字参数的名字:
def person(name, age, *, city, gender): #只接受city和gender作为关键字参数
    pass

person('djs', 23, city = 'Chongqing', gender = 'M') #函数调用示例
没有 * 号将被视为位置参数, 调用函数时,需传入参数名

⑥多种参数混合使用时, 参数定义的顺序必须是:
必选参数,默认参数,可变参数,命名关键字参数,关键字参数 
def fun1(a, b = 0, *args, **kw) #其中a为必选参数,b为默认参数,args为可变参数,kw为关键字参数
    pass

def fun1(a, b = 0, *, c, **kw) #其中a为必选参数,b为默认参数,c为命名关键字参数,kw为关键字参数
    pass

4.递归函数


如果一个函数在内部调用函数本身,这个函数就是递归函数
通过栈实现,每调用一层函数,栈就加一层栈帧,每当函数返回,栈就减一层栈帧
优点是逻辑简单清晰,缺点是调用过深会导致栈溢出





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值