您的位置:首页 > 脚本大全 > > 正文

python中如何定义带走参数的函数(Python函数定义及传参方式详解4种)

更多 时间:2021-11-03 15:35:06 类别:脚本大全 浏览量:428

python中如何定义带走参数的函数

Python函数定义及传参方式详解4种

一、函数初识

1、定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 

2、好处:代码重用;保持一致性;可扩展性。

3、示例如下:    

  • ?
  • 1
  • 2
  • 3
  • 4
  • # -*-coding:utf-8-*-
  • def sayHello():
  •   print('Hello world!')
  • sayHello()
  • 二、函数传参方式

    如上面的实例是函数中最基础的一种,是不传参数的,说到这里,我们有必要了解一下何为函数参数:

    1、函数参数:

    形参变量: 只有在被调用时才分配内存单元,调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。

    函数调用结束返回主调函数后不能再使用该形参变量

    实参:可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

    2、函数传参的分类

    <1> 位置参数

    位置参数顾名思义,就是调用函数时传的实参与函数的形参位置上一一对应的参数。

    如下实例:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • #位置参数
  • print('\n以下是位置参数传值\n')
  • def stu_info(name,age,major,country):
  •   print('--------学生信息-------')
  •   print('姓名:',name)
  •   print('年龄:',age)
  •   print('专业:',major)
  •   print('国籍:',country)
  •  
  • stu1 = stu_info('Jack',21,'Chinese','CN') # 实参依次与函数中的name,age,major,country对应
  • stu2 = stu_info('Frank',20,'JP','UN')
  • stu3 = stu_info('Rose',19,'Art','UK')
  • <2> 默认参数

    默认参数就有点不同了,是你在函数形参中定义好的,当实参中未传对应的参数时,它就派上用场了,默认给你加上。是不是有点贴心呢?

    注意:默认参数,必须放在位置参数之后,否则会出错

    实例如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • #默认参数
  • print('\n以下是默认参数传值\n')
  • def stu_info(name,age,major,country = 'CN'):# country设为了默认参数,必须放在位置参数之后,否则会出错
  •   print('--------学生信息-------')
  •   print('姓名:',name)
  •   print('年龄:',age)
  •   print('专业:',major)
  •   print('国籍:',country)
  •  
  • stu1 = stu_info('Jack',21,'Chinese') # 此处未传对应的值,但形参中已经定义了,所以不用担心找不家了!
  • stu2 = stu_info('Frank',20,'JP')  # 你也是的
  • stu3 = stu_info('Rose',19,'Art','UK')  # 既然你已经传参了,就随你了。
  • <3> 关键参数

    正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定参数名的参数就叫关键参数),但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后。

    还是奉上实例:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • #关键参数,不能重复赋值,且指定的参数应在位置参数之后
  •  
  • print('\n以下是关键参数传值\n')
  • def stu_info(name,age,major,country = 'CN'): #
  •   print('--------学生信息-------')
  •   print('姓名:',name)
  •   print('年龄:',age)
  •   print('专业:',major)
  •   print('国籍:',country)
  •  
  • stu1 = stu_info('Jack',21,'Chinese')
  • stu2 = stu_info('Frank',20,major='JP') # major即为关键参数,单独指定,但必须放在位置参数之后
  • stu3 = stu_info('Rose',19,'Art',country='UK')
  • <4> 非固定传参

    这种传参方式可就大有讲究了,花样可谓繁多,自然本领也就大多了,不信往下看。

    可以细分为两类:

    非固定传参方式一:

    可同时指定多个用户,传过来的所有参数打包成元祖。如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • #-*-coding:utf-8-*-
  •  
  • #方式一
  • def send_alert(msg,*users): # '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖
  •   for u in users:
  •     print('报警!请及时查看...',u,msg)
  • send_alert('你的系统已濒临崩溃!','cc','hyt','yuq','dy')
  •  
  • #方式二
  • def send_alert(msg,*users): # '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖
  •   for u in users:
  •     print('报警!请及时查看...',u,msg)
  • send_alert('你的系统已濒临崩溃!',*['cc','hyt','yuq','dy'])
  •  
  • '''
  •   如果列表前不加 * 号,整个列表就会被当作元组里的一个元素,
  • 加 * 号后就相当于列表里每个元素都是元祖的一个元素了。就会向元组里的每个成员都发出讯息了。
  • '''
  •  
  • def send_alert(msg,*users,age):
  •   for u in users:
  •     print('报警!请及时查看...',u,msg)
  • send_alert('你的系统已濒临崩溃!','sc','qh',age=22)
  •  
  • '''
  • '*users‘此时会默认获取前一个位置参数之后所有的元素,若传参时最后不指定关键参数就会报错,age无法获取传值
  • '''
  • 非固定传参方式二:        

    可同时指定多个用户,传过来的所有参数打包成元组或字典。如下:  

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • #-*-coding:utf-8-*-
  •  
  • def func(name,*args,**kwargs): # 形参依次是位置参数,元组,字典
  •   print(name,args,kwargs)
  •  
  • func('Hope',22,'CN','tomorrow') #输出:Hope (22, 'CN', 'tomorrow') {}
  • func('Try',21,'will',addr='HG',num=666) #输出:Try (21, 'will') {'addr': 'HG', 'num': 666}
  •  
  • dit = {'major':'Math','interest':'reading'}
  • func('want',*['day','up'],**dit) #输出:want ('day', 'up') {'major': 'Math', 'interest': 'reading'}
  • 小伙伴们到这里,Python中函数常用的传参方式你就都了解了?是不是又长姿势了呢!

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。

    原文链接:https://www.cnblogs.com/schut/p/8414899.html