函数的使用:
一 定义函数的三种形式
 1.1 无参函数
 1.2 有参函数
 1.3 空函数
二 调用函数的三种形式
 2.1 语句形式    def foo():   print('from foo')      foo()
 2.2 表达式形式 
 2.3 可以当作参数传给另外一个函数 
三 函数的返回值需要注意:
 1 返回值没有类型限制
 2 返回值没有个数限制
  返回1个值:调用函数拿到的结果就是一个值
  返回多个值:调用函数拿到的结果就是一个元组
  返回0个值,或者不写return:调用函数拿到的结果就是None
四 return关键字:return是函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就结束
函数的参数
函数的参数分为两大类:
 1 形参: 指的是在定义函数阶段括号内指定变量名,即形参本质就是"变量名"
 2 实参: 指的是在调用函数阶段括号内传入的值,即实参本质就是"值"
 形参与实参的关系:在调用函数时,会将实参(值)赋值(绑定)给形参(变量名),
 这种绑定关系在函数调用时临时生效,在调用结束后就失效了
 
形参与实参的具体分类
一 位置参数
 1.1 位置形参: 在定义函数阶段按照从左到右的顺序依次定义的形参,称之为位置形参
 注意:但凡按照位置定义的形参,必须被传值,多一个不行,少一个也不行
 1.2 位置实参: 在调用函数阶段按照从左到右的顺序依次传入的值,称之为位置实参
 注意:但凡按照位置定义的实参,会与形参一一对应
二 关键字参数
关键字实参: 在调用函数阶段,按照key=value的形式指名道姓地为形参传值
注意:
 1. 可以完全打乱顺序,但仍然能指名道姓为指定的形参传值
 2. 可以混合使用位置实参与关键字实参,但是必须注意:
  2.1 位置实参必须放到关键字实参前面
  2.2 不能对一个形参重复赋值
  
三 默认参数
默认参数:指的是在定义函数阶段,就已经为某个形参赋值了,改形参称之为有默认值的形参,简称默认形参
注意:
 1. 在定义阶段就已经被赋值,意味着在调用阶段可以不用为其赋值
 2. 位置形参应该放到默认形参前面
 3. 默认参数的值在函数定义阶段就已经固定死了
 4. 默认参数的值通常应该是不可变类型
位置形参vs默认形参
# 对于大多情况下传的值都不相同的,应该定义成位置形参
# 对于大多情况下传的值都相同的,应该定义成默认形参
四 可变长度的参数
 站在实参的角度,参数长度可变指的是在调用函数时,传入的实参值的个数不固定
 而实参的定义方式无法两种:位置实参,关键字实参,对应着形参也必须有两种解决方案*与**,类分别应对溢出的位置实参与关键字实参
 1. 在形参中带*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名
 2. 在实参中带*: 但凡在实参中带*星的,在传值前都先将其打散成位置实参,再进行赋值
 3. 在形参中带**:会将调用函数时溢出关键字实参保存成字典的形式,然后赋值**后的变量名
 4. 在实参中带**: 但凡在实参中带**星的,在传值前都先将其打散成关键字实参,再进行赋值
 5. 规范: 在形参中带*与**的,*后的变量名应该为args,**后跟的变量名应该时kwargs
*****当我们想要将传给一个函数的参数格式原方不动地转嫁给其内部的一个函数,应该使用下面这种形式
五 命名关键字参数: 放到*与**之间的参数称之为命名关键字参数
 注意: 命名关键字参数必须按照key=value的形式传值 

day9笔记整理,记忆的更多相关文章

  1. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  2. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  3. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  4. HTTP协议笔记整理

    有人说过,精通HTTP协议能赢过95%的前端工程师,所以我毅然的踏上这条路,哈哈哈,接下来把自己的学习笔记整理出来. 我会从比较底层的模型开始: 1.网络的五层模型 2.TCP/IP协议 3.HTTP ...

  5. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  6. 从0开始学Swift笔记整理(五)

    这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...

  7. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. 学习ReactNative笔记整理一___JavaScript基础

    学习ReactNative笔记整理一___JavaScript基础 ★★★笔记时间- 2017-1-9 ★★★ 前言: 现在跨平台是一个趋势,这样可以减少开发和维护的成本.第一次看是看的ReactNa ...

  9. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. 记一次挂马清除经历:处理一个利用thinkphp5远程代码执行漏洞挖矿的木马

    昨天发现 一台服务器突然慢了 top 显示 几个进程100%以上的cpu使用 执行命令为 : /tmp/php  -s /tmp/p2.conf 基本可以确定是被挂马了 下一步确定来源 last 没有 ...

  2. Laravel $request添加数据或数据修改

    laravel开发项目的时候,很多时候我们从$request里获取请求参数,今天在做项目的时候,遇到这样一个需求,就是请求参数到后台,后台需要根据判断重新给$request赋值,那如何去处理的 使用  ...

  3. tornado请求头/状态码/接口 笔记

    set_header()/set_default_headers() set_header():设置请求头数据 set_default_headers():设置默认请求头数据 import torna ...

  4. golang查看channel缓冲区的长度

    golang提供内建函数cap用于查看channel缓冲区长度. cap的定义如下: func cap(v Type) int The cap built-in function returns th ...

  5. SDI core端口说明

    SDI core端口说明 本文基于赛灵思的官方文档以及自己的理解: 1.生成SDI core 2.得到SDI core的顶层文件,并对每个端口做出解释 smpte_sdi smpte_sdi ( .r ...

  6. JS获取坐标

    1.js获取对象的绝对坐标 方法1: function getAbsPoint(e) { var x = e.offsetLeft, y = e.offsetTop; while(e=e.offset ...

  7. js 格式化时间日期函数小结

    下面是脚本之家为大家整理的一些格式化时间日期的函数代码,需要的朋友可以参考下. 代码如下: Date.prototype.format = function(format){ var o = { &q ...

  8. Python单元测试框架之pytest 1 ---如何执行测试用例

    From: https://www.cnblogs.com/fnng/p/4765112.html 介绍   pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简 ...

  9. 【Darwin学习笔记】之TaskThread

    [转载请注明出处]:http://blog.csdn.net/longlong530 学习TaskThread主要有三个类要关注: TaskTreadPool: 任务线程池 TaskThread:任务 ...

  10. bzoj5052: 繁忙的财政官

    求区间内相差最小的两个数的差 分sqrt(n)块,预处理两个数在块内,以及一个数在块内一个数在零散部分的情况,询问时归并排序处理两个数都在零散部分的情况,时间复杂度$O((n+q)\sqrt{n})$ ...