python - 函数的四种参数

python中调用函数时,参数用法通常有以下四种:
  • 位置参数:对应位置需要对应参数,顺序,位置必须要和函数定义(声明)一致。一个萝卜一个坑,哪个坑里种什么萝卜,不能搞错了。这种和传统c语言用法很像
  • 默认参数:有些参数在函数声明时已经定义好了,你可以在调用时不用输入,则默认调用你早已填好的那个参数;如果自己调用时把参数带上了,那么就会覆盖掉原来的参数。
  • 可变参数:当我们不确定输入多少参数,但又必须按照顺序收集参数,就需要用到可变参数。
  • 关键字参数:关键字参数在输入时,一定要以参数名 = 参数值这种形式来调用函数。
    也就是说,本来有个名叫信息收集的函数,你可填信息收集(张三,男,1998.10),现在要这样写:信息收集(姓名 = '张三',性别= '男',出生年月 = '1998.10')

注意python3完全支持以下参数,python2不支持关键字参数

1.位置参数

假如有以下一个函数,计算圆周周长:

def circle(r, pi)
	length = 2 * pi * r
	return length

当我们调用时:

circle(2, 3.14)

前面是半径,后面是圆周率值 π \pi π顺序不能错,个数也要对,所谓一一对应

如果要反着用,要参数名 = 参数值

circle(pi = 3.14, r = 4)

2.默认参数

还是上面的例子,圆周率是一个确定的值,我们通常只改变它的精度。一般在声明(定义)函数时就设定好它的值了。

def circle(r, pi = 3.14):
	return 2 * pi * r

一般调用,我们无需考虑 π \pi π这个值

circle(4)

当需要改变精度时,用如下调用方式,覆盖默认值

circle(4, 3.1415926535)

3.可变参数

- 1.参数收集

  • 当我们传输的参数个数不确定,该怎么做呢?

举例:假设需要记录下班上举手回答问题的同学的名字

def name(*name):
  print("举手的同学有:", name)
  return 0

调用函数

 name('haha', 'gege','xiaoming')

结果:
举手的同学有:('haha', 'gege','xiaoming')

输出结果是元组,并且想输入多少就能输入多少

  • 当我们传输的参数个数不确定,但又必须要按照顺序传参该怎么做呢?

举例:学校需要收集信息,姓名,出生年月等。住校学生无需提供家庭住址,但是走读的学生需要提供。这就是典型的按顺序收集信息,但是具体项目却可以根据情况加以变通的实例。

参数名 = 对应值的传参形式,收集参数,并在内部构成一个字典

例如信息收集函数定义如下:

def student(**info)print("学生信息:", info)
  return 0

调用方式:

student(name = 'xiaoming', sex = 'female', age =19)

结果:
学生信息:{'name': 'xiaoming', 'sex' = 'female', 'age' = 19}

- 2.逆向参数收集

逆向参数收集更为常用一点:在元组或者字典中,当调用函数时传入该元组或字典。

例如,在保存着很多组圆周信息(半径r,不同精度 π \pi π)的元组中,当我们要查看各个小组下圆周周长是多少,代码如下:

data = ((2, 3.14), (3, 3.14159), (5, 3.1415926))
for i in data:
  circle(*i)

上述元组共三组数据,从第0组到第二组,circle( *i)将依次装入,并计算出结果

对于字典,用法也是一样的

还是学生信息采集的问题,定义学生信息的字典,并用student()函数读取:

info = {
	'name' = 'xiaoming',
	'sex' = 'female'
	'age' = 19
}
infomation = student(**info)

两个星号的作用,把字典拆解为单个的参数名=参数值的形式分别赋值给函数的各个参数。

通常我们可以在登陆某网站或者数据库时,将网站网址,访问端口,用户名,用户密码设置为字典,通

过逆向参数收集将信息填入,以便访问后台数据。

4.关键字参数

该参数必须以参数名称 = 参数值的形式赋值,否则将报错

  • 举例:
def student(name, age, *, sex):
  print("学生姓名:",  name)
  print("学生年龄:",  age)
  print("学生性别:", sex)
  return 0

调用时,*后面参数必须要写成sex = 'female',直接写成'female'错误的

student('xiaoming', 18, sex = 'female')#正确
student('xiaoming', 18, 'female')#错误

显然,关键字参数只能在位置参数后面,否则将出错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值