30-计算和控制流-代码组织:函数的参数

一、形式参数(parameter)与实际参数(argument)
形式参数是指在函数中函数创建和定义过程中, 函数名后面括号里的参数。只是代表一个位置、一个变量名。
【我的理解:用特定的符号代指参数,但其本身没有值,不参加运算。】

实际参数是指在函数在调用过程中传入的参数。【我的理解:函数运算中会传入实际数值,并产生相应的运算结果。】

比如:>>>def tiger(a,b):  #a,b均为形式参数
              return a+b
        >>>tiger(1,2) #1,2为实际参数,参与实际运算
              3

二、固定参数和可变参数
固定参数是在参数表中写明参数名key的参数,固定了参数的数量和顺序。
类似于:
def func(key1,key2,key3...):
def func(key1,key2=value2,key3...):

可变参数是指在定义的时候还不知道会有多少参数传入,用特定的符号来替代。
def func(*args): #不带key的多个参数
def func(**kwargs): #key=val形式的多个参数

*args 是arguments的缩写。 其本质是元组。
**kwargs 是keywords agrs的缩写。其本质是字典。

值得注意的是,*是在定义函数的形式参数时用来标志参数的类型,在函数体内要获取真正的参数需要将*去掉。

例子1:关于固定参数调用的逻辑
def panda(key1,key2,key3=23):    print("k1=%s,k2=%s,k3=%s"%(key1,key2,key3))
print("###panda###")
#下面的函数按照约定的顺序传入了key1和key2,但是没有传入key3值,故直接采用了缺省值
panda("a","b")
#下面的函数按照约定的顺序传入了key1、key2、key3,注意这里的key3采用的是最新定义的值
panda("aa","bb",555)
#下面的函数利用参数名称关联了对应的值,所以可以不管顺序。key3没有传入,直接采用了缺省值。
panda(key2="cc",key1="dd")

结果:
###panda###
k1=a,k2=b,k3=23
k1=aa,k2=bb,k3=555
k1=dd,k2=cc,k3=23

例子2:关于不带key的多个参数的调用
def cat(*args):
      for arg,i in zip(args,range(len(args))): 
     #关于zip函数的使用大家可以自行查阅
     #在函数中参与运算的时候*需要去掉
         print("arg%d=%s"%(i,arg))
print("==cat==")
cat(11,22,"abc","true") #参数1

cat(11,22,"abc","true",33) #参数2

结果:
==cat==
arg0=11
arg1=22
arg2=abc
arg3=true

arg0=11
arg1=22
arg2=abc
arg3=true
arg4=33

例子3:关于带key的多个参数的调用
def dog(**kwargs):    
      for key,val in kwargs.items(): 
      #在函数中参与运算的时候*需要去掉            
           print("%s=%s"%(key,val))
print("===dog===")
dog(name="andy",gender="male",age=35)

结果:
===dog===
name=andy
gender=male
age=35

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值