python中函数的参数的理解

版权声明: https://blog.csdn.net/qq_21578125/article/details/86134551

按参数传递方式

位置参数

def foo3(companyName,websiteUrl):#位置参数的定义
    print('公司名:',companyName,'公司网址:',websiteUrl)
foo3('公司名','http://www.mycompany.com')
foo3('http://www.mycompany.com',websiteUrl='公司名') 

#位置参数,对位置敏感,传递时不用指定参数名

关键字参数

def foo4(companyName,websiteUrl,intro='专注AI教育'):#关键字参数的定义
    print('公司名:',companyName,'公司网址:',websiteUrl,'介绍:',intro)

foo4('七月在线','http://www.julyedu.com')#不传关键字参数,函数依旧可以被调用,采用默认值
foo4('七月在线','http://www.julyedu.com',intro='国内领先的AI教育平台')#传关键字参数,覆盖默认值

#如果想一次传入不定长个位置参数,怎么办呢?
#位置参数包裹及使用*

def mysum1(a,b,c):
    return a+b+c

mysum1(5,7,15)
#mysum1(5,7)  #报错,因为传入的参数少于函数定义时的个数

#mysum1(5,7,15,22)  #报错,因为传入的参数多于函数定义时的个数

#这时我们就需要使用包裹进行接收

def mysum2(*args):
    print(type(args))
    return sum(args)

mysum2(5,7,15,22,33)#正常调用
mysum2(5,7)#正常调用

#那同样如果想一次性传入不定长关键字参数,也可以使用一个包裹进行接收
#关键字参数包裹及使用**

def filmInfo(**kwargs):
    print(type(kwargs))
    for key,values in kwargs.items():
        print(key,':',values)

filmInfo(film='羞羞的铁拳',box=3.5)
filmInfo(film='羞羞的铁拳',box=3.5,rate=7.9)
# d1={'羞羞的铁拳':3.5,'box':3.5}

#包裹解包顺序
#首先拆位置参数包裹,按顺序给必选,默认,可变。
#再抓给关键字参数包裹

def scoreReport(name,age,*args,course='python',**kwargs):
    print('个人信息:',name,age)
    for item in args:
        print(item)
    print('课程信息:',course)
    print('每节课成绩:')
    for key,value in kwargs.items():
        print (key,value)
    
scoreReport('xiaoming',22,'高中部','三年二班',Lesson1=80,Lesson2=85)
scoreReport('xiaoming',22,'三年二班',course='machine learning',Lesson1=80,Lesson2=85)

#传递参数时使用包裹-位置参数

l1=[1,5,6,7,2,5,3.5,9,6,3,4]
mysum2(*l1)

zip案例

l1=[(1,3),(2,4)]
list(zip(*l1))

传递参数时使用包裹-关键字型参数

d1={'羞羞的铁拳':3.5,'雷神3':3.1,'战狼2':60}
filmInfo(**d1)

猜你喜欢

转载自blog.csdn.net/qq_21578125/article/details/86134551