python函数

本文详细介绍了Python中的函数定义、调用、参数传递机制,包括位置参数、关键字参数、默认值、可变对象与不可变对象的区别,以及*args和**kwargs的使用。还探讨了函数的返回值、局部变量和全局变量的概念,并通过实例展示了递归和斐波那契数列的实现。此外,文章还讨论了函数参数顺序与作用域的相关规则。
摘要由CSDN通过智能技术生成

函数

#函数定义
def calc(a,b):#a,b形式参数(形参),出现在函数定义处
    c = a+b;
    return c

#函数调用
result = calc(10,20)#10,20为实际参数,实参出现在函数调用处
print(result)

函数的参数传递
函数传参

def fun (a,b):
    print("a = " , a)
    print("b = " , b)
    a = 100
    b.append(10)
    print("a = ", a)
    print("b = ", b)

w = 12
u = [12 , 23 , 34]
print('w = ' , w)
print('u = ', u)
fun(w , u)      #将位置传参,a,b是函数定义处的形参,w,u是函数调用处的实参,实参和形参名称可以不一致
print('w = ' , w)
print('u = ', u)

"""
在函数调用的过程中,进行参数的传递
如果是不可变对象,在函数体的修改不会影响实参的值→a=100,不会影响w的值
如果是可变对象,在函数体的修改会影响实参的值→b.append(10),会影响u的值
"""

在这里插入图片描述

def fun(num):
    odd = []#存奇数
    even = []#存偶数

    for i in num:
        if i%2:           #每一个对象都有一个布尔值,非零为True,零为False
            odd.append(i)
        else:
            even.append(i)

    return odd , even

print(fun([1,2,3,4,5,6,7,8,9]))

#output:([1, 3, 5, 7, 9], [2, 4, 6, 8])

"""
函数的返回值:
    ①如果函数没有返回值【不需要给调用处提供数据】,return可以省略
    ②函数返回值,如果是1个,直接返回原类型
    ③函数返回值,如果是多个,返回的结果为元组
"""
def fun1():
    print("dhajsdh")

fun1()


def fun2():
    return 'hello'

print(fun2())

def fun3():
    return 'hello','world'
print(fun3())

"""
output:
        dhajsdh
        hello
        ('hello', 'world')
"""
"""
函数是否需要返回值,视情况而定
"""

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

def fun(*a):
    print(a)

fun(*[1,2,3,4,5,6,7,8,9])
print('-----------------------------')
def fun2(**a):
    print(a)

fun2(**{'a':78,'b':156,'c':333})
print('-----------------------------')
def fun1(a,b,c):
    print(a)
    print(b)
    print(c)
fun1(10,20,30)
print('-----------------------------')
fun1(*[1,2,3])#在函数调用时,将列表中的每个元素都转换为位置实参传入
print('-----------------------------')
fun1(a=14,b=15,c=16)#关键字实参
print('-----------------------------')
fun1(**{'a':78,'b':156,'c':333})#将字典中的键值对都转换为关键字实参

def fun(a,b,c,d):
    print('a = ', a)
    print('b = ', b)
    print('c = ', c)
    print('d = ', d)

fun(10,20,30,40)#位置实参传递
fun(a=10,b=20,c=50,d=80)#关键字实参传递
fun(10,20,c=60,d=70)#混合传递

"""
需求,c,d只能采用关键字实参传递
"""
def fun1(a,b,*,c,d):#从*之后的参数,在函数调用时,只能采用关键字参数传递
    print('a = ', a)
    print('b = ', b)
    print('c = ', c)
    print('d = ', d)
fun1(10,20,30,40)#位置实参传递
fun1(a=10,b=20,c=50,d=80)#关键字实参传递
fun1(10,20,c=60,d=70)#混合传递

"""
函数定义时的形参的顺序问题
"""
def fun1(a,b=10):
    pass

def fun2(*args):
    pass

def fun3(**args2):
    pass

def fun1(a,b,*,c,d):#从*之后的参数,在函数调用时,只能采用关键字参数传递
    pass

def fun5(a,b,*,c,d,**args):
    pass

def fun6(*ards,**args):
    pass

def fun7(a,b=10,*ards,**args):
    pass

在这里插入图片描述

def fun(a,b):
    c = a + b  #c为局部变量(c为函数体中进行定义的变量),a,b为函数形参,作用范围也是函数内部相当于局部变量
    print(c)

#print(c),因为a,c超出了其作用的范围(超出作用域)
#print(a)

name = '哇撒大苏打'#name的作用范围为全局-->全局变量
def fun2():
    print(name)
fun2()

def fun3():
    global age#局部变量使用global声名,这个变量实际就变成了全局变量
    age = 20
    print(age)

fun3()
print(age)

在这里插入图片描述在这里插入图片描述

def fun(n):
    if n==1:
        return 1
    else:
        return n*fun(n-1)

print(fun(6))
def fib(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)
#斐波那契数列第六位上的数列
print(fib(6))

#输出前六位上的数字
for i in range(1,7):
    print(fib(i))

![在这里插入图片描述](https://img-blog.csdnimg.cn/5c7163dedb7846328326e154ca0c4d57.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43350706

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值