一  函数的参数:

我们把函数的参数分为形式参数和实际参数,简称形参和实参。

形参:在定义函数时,函数名括号内定义的参数。

实参:在调用函数时,函数名括号内需要用户传入的值。

注意:

实参值(相当于变量的值)与形参(变量名)的绑定关系只在函数调用时才会生效,在函数调用结束后接触绑定关系。

二  那么我们所学的函数参数有:位置形参与默认形参,位置实参与关键字实参。

位置形参:

  1. def foo(x,y,z)
  2. print(x,y,z,)
  3.  
  4. 那么在foo后面的就叫做位置形参,调用函数时必须为其传值,多一个不行,少一个也不行。
  1. 同样的位置形参必须放到默认形参的前面。
    对于经常需要变化的值,需要将对应的形参定义成位置形参。

位置实参:

  1. def foo(x,y,z)
  2. print(x,y,z,)
  3.  
  4. foo123
    那么(123)就是我们说说的实参,它与位置形参是一一对应的关系。

关键字参数:

关键字参数也是实参的一种。它是以key-value的形式作为实参,也就是说他相当于直接跟形参的变量进行一对一进行传值的,可以不用像位置实参那样按照位置形参的位置顺序。

  1. # def func(x,y,z):
  2. # print(x,y,z)
  3. #
  4. # # func(,z=,y=,)# 位置实参必须放到关键字实参前面
  5. # func(y=,x=,z=)# 关键字实参可以不按顺序
    #func(1,x=1,y=2,z=1)# b不能为一个位置形参重复传值
  6. # def register(name,age,sex='fenale'):
  7. # print(name,age,sex)

默认参数:

默认参数同样作为形参,它主要用在大多数都一样的值,需要将形参默认成为一个值,在我们需要改变的那一小部分再对其进行传值。

  1. def registernameagesex=female
    print(nameagesex)
    # register('egon',,)#当用户没有传值时默认为。
  2. # register('egon', ,'male')#当用户传入值时,则按照用户所传值
    同样的位置形参必须放到默认形参的前面

默认的参数的值只在定义阶段赋值一次,也就是说默认参数的值在定义阶段就固定死了,不会因为再在函数子代码中再次赋值而改变。

  1. def register(name,age,sex='female'):
  2. # print(name,age,sex)
  3. #
  4. # sex='male'
  5. # register('egon',,)#输出结果为female,也就是说默认形参在定义阶段就被固定了,在运行阶段不能再改变。

默认参数的值应该设为不可变类型:

  1. # def register(name, age, l=[]):#将默认参数设成可变类型列表
  2. # l.append(age)
  3. # print(name, age, l)
  4. #
  5. # register('egon',,)
  6. # register('alxe',,)
  7. # register('eg',,)结果就是每输出一次那么上一次的结果会加到下一次中来。结果为:eg [14,13,123]
  8.  
  9. # def register(name, age, l=None):
  10.  
  11. # print(name, age, l)
  1. # register('egon',,)
    # register('alxe',,)

三  可变参数:

*args会将溢出的位置实参的值全部接收,然后保存成元组传给args

  1. def func(x,y,z,*args)
  2. print(x,y,z,)
  3. print(ars)
  4.  
  5. func(,,,,,,,)
  6.  
  7. 那么输出的结果就是:
  8.  
  9. (,,,,)

 

那么一旦实参中碰到*,就要把该实参的值打散。

  1. def foo(x,y,z,a,*args):#这种情况下溢出的实参以元祖的形式赋值给args
  2. # print(x,y,z,a)
  3. # print(args)
  4. #
  5. # foo(,,,,,*[,,,,])
  6. # foo(,,,,,*(,,,,))
  7. # foo(,,,,,*'hello')#将’hello‘打散。
    输出结果为:

1 2 3 4
(5, 1, 2, 3, 4)
1 2 3 4
(5, 1, 2, 3, 4)
1 2 3 4
(5, 'h', 'e', 'l', 'l', 'o')
2 1 1 2

2  **kwargs会将溢出的关键字实参全部接收,然后保存成字典传给kwargs:

  1. def foo(x,y,z,a,**kwargs):#将溢出的关键字实参以key_value的形式存在
  2. # print(x,y,z,a)
  3. # print(kwargs)
  4. # #
  5. # foo(x=,y=,z=,a=,b=,)
  6.  
  7. 输出的结果为:
  8. {‘b’:}

**kwargs那么在关键字实参中将字典打散成key=value的形式。

  1. def foo(x,y,z,a,**kwargs):#将溢出的关键字实参以key_value字典的形式存在
  2. print(x,y,z,a)
  3. # print(kwargs)
  4. #
  5. foo(x=,y=,**{'z':,'a':})#双星号在实参中将字典中打散,打散成key=value的形式。

python之路之函数02的更多相关文章

  1. Python之路 day3 函数定义 *args及**kwargs

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import time # def logger(): # time_format ...

  2. 小白的Python之路 day3 函数

    1.函数基本语法及特性 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 ...

  3. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  4. python之路(九)-函数装饰器

    装饰器 某公司的基础业务平台如下: def f1(): print('这是f1业务平台') def f2(): print('这是f2业务平台') def f3(): print('这是f3业务平台' ...

  5. python之路之函数03

    一 首先我们学到函数的嵌套调用与定义:1 函数嵌套 # def f1(): # print(f1)#我们这里如果输入f1那么输出的则是f1这个变量(函数)所在的地址.如果输入一个字符的话那么就直接输出 ...

  6. python 之路之函数01

    一   函数 1  那么要想学习函数,我们首先应该知道函数是什么? 我们这里所说的函数与数学中的函数是不同的概念,在这里我们可以把函数看成我们写代码过程中需要用到的工具. 2  那么这个‘工具’有什么 ...

  7. python之路--初识函数

    一 . 函数 什么是函数 f(x) = x + 1 y = x + 1 # 函数是对功能或者动作的封装 函数的语法 def 函数名(): 函数体 调用: 函数名() def play(): print ...

  8. python之路_函数实例及装饰器介绍

    一.习题讲解 1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组.例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)] def cards(): num=[] for v ...

  9. Python之路----生成器函数进阶

    def generator(): print(123) yield 1 print(456) yield 2 g = generator() ret = g.__next__() print('*** ...

随机推荐

  1. Tomcat下JSP、Servlet和JavaBean环境的配置

    经常看到jsp的初学者问tomcat下如何配置jsp.servlet和bean的问题,于是总结了一下如何tomcat下配置jsp.servlet和ben,希望对那些初学者有所帮助. 第一步:下载j2s ...

  2. hive 创建orc表

    orc表 创建具备ACID及Transactions的表 这里的表需要具备下面几个条件:  1. 必须以 ORC 格式存储  2. 必须分 bucket,且不能 sort  3. 必须显式声明tran ...

  3. Vault 0.10包含了web ui

    Vault 是一个很不错的访问控制,secret api key 管理工具 新的0.10 有好多新的功能的添加,最棒的是有一个web ui 了 包含的新特性如下: K/V Secrets Engine ...

  4. C# winform 使用DsoFramer 创建 显示office 文档

    使用微软DsoFramer 组件创建,显示office 1. DsoFramer  组件的介绍 dsoframer是微软提供一款开源的用于在线编辑.调用Word. Excel .PowerPoint等 ...

  5. PHP com组件的使用 (环境搭建 以及测试)

    COM 组件在实际当前的软件开发中依然是比较重要,包括对于串口开发的人员,软件插件使用的人员,PHP 已经为我们添加了对于 COM的支持,可以很好的解决我们在开发中可能碰到的一些问题.一下是开发环境的 ...

  6. UltraEdit常用设置及快捷键

    = 关闭自动加载上次文件的方法,操作方法如下:首先,要打开UltraEdit,然后点击经[高级]-[配置],找到[文件处理]-[加载],把[重新载入先前在启动时打开的文件]勾去掉,并确定就可以了. 附 ...

  7. 用vmware安装gho文件心得

    在卡饭学到了不少知识,下面是我的一个心得分享,希望大家能用的上. 用vmware安装gho文件心得 方法1:diskgenius+ghostexp用vm新建一个空白硬盘虚拟机, 记住虚拟机文件的存储位 ...

  8. 如何取出word文档里的图片

    在生活当中,Word办公是必不可少的.但是在工作中也会遇到一些麻烦,比如说如何取出word文档里的图片呢?有的人会通过复制粘贴,通过画图保存,可是这种方法未免太繁琐了吧.下面我就来分享一下我的经验. ...

  9. C语言面试题5

    C语言面试宝典 第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为 ...

  10. WinForm下ComboBox设定SelectedValue总结 (SelectedValue==null解决办法)[转]

    http://www.cnblogs.com/qqflying/archive/2013/05/23/3096050.html 实践发现:以SelectedIndex赋值让ComboBox自动选中时能 ...