Python函数基础

本文详细介绍了Python中的函数定义与调用,包括位置参数、默认参数、可变参数、关键字参数及命名关键字参数等,并通过实例展示了递归函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数定义及调用

def my_abs(x):
    if x>=0:
        return x
    return -x
my_abs(-2)

函数参数

  • 位置参数:函数调用时的必传参数
def power(x):    #x:位置参数
    return x * x
  • 默认参数:默认参数必须指向不变对象(调用带默认参数的函数时,可以不按顺序提供默认参数,但必须把参数名写上)
def student(name, gender, age=6, city='Beijing'):
    print('name:', name,"gender:",gender,"age:",age,"city:",city)
student("fred","f")
student("fred","f",city="chengdu")
  • 可变参数:参数个数不确定(可变参数在调用时,自动组装为一个tuple)
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n*n
    return sum
calc()
calc(1,2)
num=[1,2,3]
print(calc(*num))
  • 关键字参数:关键字参数在调用时自动组装为一个dict
def person(name,age,**kw):
    print("name:",name,"age:",age,"other:",kw)
#调用时可只传入位置参数,也可传入任意个数的关键字参数
person("fred",26)   #name: fred age: 26 other: {}
person("fred",26,city="chengdu")    #name: fred age: 26 other: {'city': 'chengdu'}
extra = {"city":"chengdu","job":"engineer"}
person("fred",26,**extra)   #name: fred age: 26 other: {'city': 'chengdu', 'job': 'engineer'}
  • 命名关键字参数:限制关键字参数的名字
def person(name,age,*,city,job):
    print(name,age,city,job)    #上面的*号后面的为命名关键字参数
person("fred",26,job="engineer",city="chengdu")
#如果已定义了可变参数,则命名关键字参数前不在需要*
def person(name,age,*extra,city,job):
    print("...")
person("fred",26,(175,75),city="chengdu",job="engineer")
  • 函数参数组合-参数定义顺序:位置参数,默认参数,可变参数,明明关键字参数,关键字参数
def f(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
递归:以下两种递归方式都会存在栈溢出(因为Python没有对尾递归做优化)
  • 递归函数:函数内部调用自身
def fact(n):
    if n == 1:
        return 1
    return n*fact(n-1)
fact(10)
  • 尾递归(函数结尾返回自身,且只返回自身)
def fact(n):
    return fact_iter(n,1)
def fact_iter(num,profuct):
    if num==1:
        return profuct
    return fact_iter(num-1,num*profuct)
fact(10)
 

转载于:https://www.cnblogs.com/sghy/p/8073680.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值