主要内容:

    1、函数初识

    2、函数传参方式

       (1)位置参数

       (2)默认参数

       (3)关键参数

       (4)非固定传参

一、函数初识

  1、定义:

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

  2、好处:

      代码重用;保持一致性;可扩展性。

  3、示例如下:    

# -*-coding:utf-8-*-

def sayHello():
print('Hello world!') sayHello()

二、函数传参方式

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

  1、函数参数:

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

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

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

 2、函数传参的分类
 <1> 位置参数
      位置参数顾名思义,就是调用函数时传的实参与函数的形参位置上一一对应的参数。
      如下实例:
#位置参数
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> 默认参数

    默认参数就有点不同了,是你在函数形参中定义好的,当实参中未传对应的参数时,它就派上用场了,默认给你加上。是不是有点贴心呢?
    注意:默认参数,必须放在位置参数之后,否则会出错
    实例如下:
#默认参数
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> 关键参数
      正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定参数名的参数就叫关键参数),
      但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后。
    还是奉上实例:
#关键参数,不能重复赋值,且指定的参数应在位置参数之后

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> 非固定传参
    这种传参方式可就大有讲究了,花样可谓繁多,自然本领也就大多了,不信往下看。
    可以细分为两类:     非固定传参方式一:
       可同时指定多个用户,传过来的所有参数打包成元祖。如下:
#-*-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无法获取传值
'''


    非固定传参方式二:        

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

#-*-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中函数常用的传参方式你就都了解了?是不是又长姿势了呢!

        

返回顶部

Python函数定义及传参方式的更多相关文章

  1. python函数的动态传参.作用域与命名空间

    一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...

  2. bash函数定义/使用/传参…

    函数:function, 功能     过程式编程,代码重用         模块化编程         简洁             语法:         function f_name {    ...

  3. python函数关键字实参传参

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...

  4. python函数位置实参传参

    #!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...

  5. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  6. 指针数组的初始化和遍历,并且通过for循环方式、函数传参方式进行指针数组的遍历

    /************************************************************************* > File Name: message.c ...

  7. Python函数定义和使用

    函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...

  8. java 传参方式--值传递还是引用传递

    java 传参方式--值传递还是引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递.写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用 ...

  9. python 线程创建和传参(28)

    在以前的文章中虽然我们没有介绍过线程这个概念,但是实际上前面所有代码都是线程,只不过是单线程,代码由上而下依次执行或者进入main函数执行,这样的单线程也称为主线程. 有了单线程的话,什么又是多线程? ...

随机推荐

  1. iOS在支持arc的工程中,导入不支持arc的第三方的插件

    首先将插件导入到工程中,然后点击工程名,在targets下面找到相应的条目,然后选择build phares,打开第二行compile sourses,然后找到不支持arc的.m文件,在后边添加上“- ...

  2. 如何复制一个java对象(浅克隆与深度克隆)

    在项目中,有时候有一些比较重要的对象经常被当作参数传来传去,和C语言的值传递不同,java语言的传递都是引用传递,在任何一个地方修改了这个对象的值,就会导致这个对象在内存中的值被彻底改变.但是很多时候 ...

  3. Arcgis andoid开发之应用百度地图接口实现精准定位与显示

    怀着激动.兴奋的心情,在这个漫天柳絮的季节写下了这片博文,为什么呢,因为困扰我很久的一个技术性的问题得到了解决,发次博文,供大家参观.学习,同时,也以慰藉我长期困扰的心情,好了,废话不再,言归正传,看 ...

  4. 哈工大同义词词林 python 使用范例

    哈工大的同义词词林,应该是上个世纪的产物,里面的词比较老旧,但好歹也能用 同义词词林的作用,跟word2vec的获取相近词函数比较类似,这两者发挥的功效比较,看具体的应用吧 1. 首先下载包含同义词的 ...

  5. 安装使用lynis扫描Linux的安全漏洞

    Lynis是Linux平台上的一款安全漏洞扫描工具.它可以扫描系统的安全漏洞.收集系统信息.安装的软件信息.配置问题.没有设置密码的用户和防火墙等等. Lynis是流行可靠的安全扫描工具. 前不久,L ...

  6. 【前端】CSS入门笔记

    教程 CSS 指层叠样式表 (Cascading Style Sheets) CSS 语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 选择器通常是您需要改变样式的 HTML 元素 ...

  7. initWithImage和imageWithContentsOfFile的区别

    UIImageView *imageView = [[UIImageView alloc] initWithImage:         [UIImage imageNamed:@"icon ...

  8. 十六、python沉淀之路--迭代器

    一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...

  9. [WPF]控件应用多个样式(转)

    最近在做WPF项目,公司没有专门的UI工程师,什么都要自己做.接触WPF已经有好几年了,自定义样式什么的也可以做一些.WPF在使用样式的时候一般都是 Style="{StaticResour ...

  10. Linux:远程连接 SSH

    一.认识 SSH 定义 SSH(Secure shell):安全外壳协议:是建立在应用层基础上的安全协议: 通过 SSH 进行服务端连接,不容易被窃取信息: 连接服务器 ssh 服务器名 + @ + ...