9、函数

函数

概要
函数是一个对象
对象是内存中专门用来存储数据的一块区域
函数用来保存一些可以执行的代码,并且可以在需要的时候对这些语句多次调用
def fn():
	print('显示')
fn()
fn是函数对象 fn()调用函数
形参和实参
c=1
d=2
def fn(a,b):
    print(f'{a}+{b}={a+b}')
fn(c,d)
其中a,b是形参:定义形参就是相当于在函数内部定义了变量,但是并没有赋值
c,d是实参:函数定义时指定了形参,那么调用函数的时候也必须传递实参
函数的传递方式
给形参设定默认值,当函数未传参时,使用默认值
def fn(a = 5,b = 8,c = 10):
    print('a =', a)
    print('b =', b)
    print('c =', c)
fn()
显示的结果为:
a = 5
b = 8
c = 10

1、位置传参
位置传参就是将对应位置的实参传递给对应位置的形参
2、关键字传参
键字传参可以不按照形参定义的顺序去传参,而根据参数名来传递参数
3、位置传参和关键字传参混合使用
混合使用的时候,必须将位置参数写到关键字参数前面

实参的类型
函数在调用的时候,解释器不会检查实参的类型,所以实参的类型可以是任意的对象

1、对象做修改

s=[2,3,4,5]
def fn(lis):
    lis[0]=1
    print(f'函数内列表为:{s}')
fn(s)
print(f'函数外列表为:{s}')
显示结果为:
函数内列表为:[1, 3, 4, 5]
函数外列表为:[1, 3, 4, 5]

2、变量做修改

a=1
b=2
def fn(a,b):
    a=2
    print(f'a={a},b={b}')
fn(a,b)
print(f'a={a},b={b}')
显示结果为:
a=2,b=2
a=1,b=2
不定长参数
定义一个函数来实现任意数的和
在定义函数的时候,可以在形参的前面加上一个*,这样这个形参将会获取到所有的形参
def a(*a):
    r=0
    for i in a:
        r+=i
    print(f'总和为:{r}')
a(1,2,3,4)
显示结果为:总和为:10

可变长参数不是必须要写到最后的,但是注意 带*的参数后面的参数,必须以关键字的形式传参
def fn(a,*b,c=6):
	print(f'a={a}')
	print(f'b={b}')
	print(f'c={c}')
fn(1,2,3,4,5,6)
显示结果为:
a = 1
b = (2, 3, 4, 5, 6)
c = 6

**形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典当中
字典当中的key是参数的名字,字典当中的value是参数的值
**形参只能有一个,并且必须写在最后面
def fn(b,c,**a):
    print(f'a ={a}',type(a))
    print(f'b ={b}')
    print(f'c ={c}')
fn(b=1,d=2,c=3,e=4,f=5)
结果显示:
a ={'d': 2, 'e': 4, 'f': 5} <class 'dict'>
b =1
c =3

总结:不定长参数中:*表示最后的结果输入为一个元组,**表示最后的结果输出为一个字典

参数解包
序列中的元素的个数必须和形参的个数一致
def fn(a,*b,c=6):
 print(f'a={a}')
 print(f'b={b}')
 print(f'c={c}')
fn(1,2,3,4,5,6)

猜你喜欢

转载自blog.csdn.net/qq_37697566/article/details/102608653