函数是将一段实现功能的完整代码,使用函数名称进行封装,通过函数名称进行调用。以此达到一次编写,多次调用的目的。

内置函数:

输入函数:input()

输出函数:print()

列表定义函数:list()

自定义函数:

def 函数名(参数列表):
    函数体
    [return 返回值列表]

函数调用:函数名(参数列表)

def get_sum(num):
    s=0
    for i in range(1,num+1):
        s+=i
    print(f'1到{num}之间的累加和为:{s}')

get_sum(10)
get_sum(100)
get_sum(1000)

 函数的参数传递

位置参数:是指调用时的参数个数和顺序必须与定义的参数个数和顺序相同。

关键字参数:是在参数调用时,使用“形参名称=值”的方法进行传参,传递参数顺序可以与定义时参数的顺序不同。

默认值参数:是在函数定义时,直接对形式参数进行赋值,在调用时如果该参数不传值,将使用默认值,如果该参数传值,则使用传递的值。

def get_birthday(name='李磊',age=20):
    print(f'祝{name} {age}岁生日快乐')

#位置参数调用
get_birthday('张三',24)

#关键字参数调用
get_birthday(age=24,name='张三')

#位置参数和关键字参数混合调用时,位置参数必须在关键字参数前面,否则会报错
get_birthday('张三',age=24)

#默认值参数传值,函数在定义的时候已指定了默认值
get_birthday()  #name和age都使用默认值
get_birthday('张三') #age使用默认值
get_birthday(age=24) #name使用默认值
# get_birthday(24) 没有使用关键字参数传参,就相当于24作为name的传值,导致程序报错。

# 当位置参数和默认值参数同时存在的时候,位置参数必须在默认值参数的前面,否则函数定义会报错

可变参数:又分为个数可变的位置参数和个数可变的关键字参数两种,其中个数可变的位置参数是在参数前加一颗星(*para),para形式参数的名称,函数调用时可接受任意个数的实际参数,并放到一个元组中。个数可变的关键字参数是在参数前加两颗星(**para),在函数调用时刻接受任意多个“参数=值”形式的参数,并放到一个字典中。

# 个数可变的位置参数 *para
def fun(*para):
    print(type(para))
    for item in para:
        print(item)

print('*'*50)
fun(10,20,30,40)  # 类型为tuple
print('*'*50)
fun(10)
print('*'*50)
fun(20,30)
print('*'*50)
# [10,20,30,40]这时列表参数是作为一个单独参数调用,而如果要使用列表中的元素调用,则需要在列表参数前加上*
fun([10,20,30,40])
fun(*[10,20,30,40]) # *相当于系列解包

# 个数可变的关键字参数 **para
def fun2(**para):
    print(type(para))
    for key,value in para.items():
        print(f'{key}-->{value}')

print('*'*50)
fun2(name='张三',age=20,sex='')  #类型为dict
print('*'*50)
d={'name':'张三','age':60,'sex':''}
#fun2(d)   #这种使用字典类型数据作为参数,不能调用。需在参数前面加上**,系列解包
fun2(**d)  #在参数前加上**进行系列解包

函数的返回值

1,如果函数的运行结果需要在其他函数中使用,那么这个函数就应该被定义为带返回值的函数。

2,函数的运行结果使用return关键字进行返回。

3,return可以出现在函数中的任意一个位置,用于结束函数。

4,返回值可以是一个值,或多个值,如果返回的值是多个,结果是一个元组类型。

# 1)无返回值函数
def get_sum1(a,b):
    print(a+b)

get_sum1(10,15)
print(get_sum1(10,15))

print('*'*50)
# 2)只有返回一个值的函数
def get_sum2(a,b):
    return a+b

result=get_sum2(10,25)
print(result)
result=get_sum2(get_sum2(10,10),20)
print(result)

print('*'*50)
# 3) 返回多个值的函数 返回的是元组类型
def get_sum3(num):
    s=0
    odd_sum=0
    even_sum=0
    for i in range(1,num+1):
        if i%2==0:
            even_sum+=i
        else:
            odd_sum+=i
        s+=i
    return odd_sum,even_sum,s

result=get_sum3(10)
print(type(result))
print(result)

a,b,c=get_sum3(10)  #可以使用多个参数进行接收结果
print(a)
print(b)
print(c)

 

 posted on 2023-12-17 19:45  会飞的金鱼  阅读(19)  评论(0)    收藏  举报