当前位置: 首页 > news >正文

python全栈脱产第9天------定义函数的形式、调用函数的形式、函数的返回值、函数参数...

一、定义函数的的三种形式

  1.无参函数:函数不需要传参数

  2.有参函数:函数需要传递参数来运行

  3.空函数:函数内容为空,用pass代替,主要用于构思阶段

二、调用函数的三种形式

  1.语句形式

  def foo():

    print('hello world')

  foo()

  2.表达式形式

  def foo(x,y):

    res=x+y

    return res

  print(foo(1,2))

  3.可以当做参数传给另一个函数

  def max1(x,y):

    if x>y:

      return x

    else:

      return y

  print(max1(1,2),3)

三、函数的返回值

  注意点:1.返回值没有类型限制

      2.返回值没有个数限制:(1)返回一个值:调用函数拿到的结果就是一个值

                 (2)返回多个值:调用函数拿到的结果是一个元组

                 (3)返回0个值,或是不写return:调用函数的结果就是None

  return关键字:return是函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就结束

四、函数参数的

  形参:指的是定义函数阶段括号内指定变量名,即形参本质就是“变量名”

  实参:指的是调用函数阶段括号内传入的值,即实参本质就是“值”

  形参与实参的关系:在调用函数时,会将实参赋值给形参,这种绑定关系在函数调用时临时生效,在调用结束后就失效了

  形参与实参的具体分类:1.位置形参:在定义函数阶段按照从左到右的顺序依次定义的形参,称之为位置形参

                注意:按照位置形参定义,必须被传值,不能多或者少

             2.位置实参:在调用函数阶段按照从左到右的顺序依次传入的值,称之为位置实参

                注意:按照位置定义的实参,会与形参一一对应

             3.关键字参数(关键字实参):在调用阶段,按照key=value的形式指名道姓地为形参传值

                注意:1.可以完全打乱顺序,但仍然能只能为指定的形参传值

                   2.可以混合使用位置实参与关键字实参,但是要注意:位置实参必须要放到关键字实参的前面;不能对一个形参重复赋值

  默认参数:指的是定义在函数阶段,就已经为某个形参赋值了,改形参为有默认值的形参,简称默认形参

       注意:1.在定义阶段已经被赋值,意味着在调用阶段可以不用为其赋值

          2.位置形参应该放在默认参数前面

          3.默认参数的值在函数定义阶段已经固定

          4.默认参数的值通常应该是不可变类型

  位置形参VS默认形参:对于大多数情况下,传的值都是不相同的,应该定义为位置形参

             对于大多数情况下,传的值都是相同的,应该定义为默认形参

  可变长度的参数:站在实参的角度,参数长度可变指的是在调用函数时,传入的实参值的个数不固定

          而实参的定义方式无法两种:位置实参,关键字实参,对应着形参也必须有两种解决方案*与**类,分别应对溢出的位置实参与关键字实参

          1.在形参中*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名

          2.在实参中带*:但凡在实参中带*的,在传值前,都先将其打散成位置参数,再进行赋值

          3.在形参中带**:会将调用函数时溢出的关键字实参保存成字典的形式,然后赋值**后的变量名

          4.在实参中带**:但凡在实参中带**的,在传值前都先将其打散成关键字实参,在进行赋值

          5.规范:在形参中带*与**的,*后的变量名应该是args,**后的变量名应该是kwargs

  命名关键字参数:放到*和**之间的参数称为命名关键字参数  注意:命名关键字参数必须是key=value的形式传值

 

转载于:https://www.cnblogs.com/zhouyi0316/p/9433600.html

相关文章:

  • SVG和canvas的区别
  • PL/SQL程序设计(二)—— PL/SQL块结构和组成元素
  • day24 面向对象设计part1
  • 无监督学习:Deep Auto-encoder(深度自动编码器)
  • UVALive 4108 - SKYLINE(线段树区间更新)
  • PDO和MySQLi区别和数度;到底用哪个?
  • android 换行符(\n) 在TextView中显示不正常的问题
  • App上线-Missing App Store Icon
  • Windows 环境Oracle客户端下载安装
  • datetime模块的简单用法
  • JVM 内存解析,以及自己的一些见解
  • 对CRC32的小结加上bugku一道题目:好多压缩包
  • Excel-DNA自定义函数的参数智能提示功能:ExcelDna.IntelliSense1.1.0.rar
  • D05——C语言基础学PYTHON
  • 常见HTTP状态码
  • 【面试系列】之二:关于js原型
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • dva中组件的懒加载
  • EventListener原理
  • HTTP 简介
  • Java,console输出实时的转向GUI textbox
  • Laravel Telescope:优雅的应用调试工具
  • Laravel核心解读--Facades
  • leetcode388. Longest Absolute File Path
  • Magento 1.x 中文订单打印乱码
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • tweak 支持第三方库
  • vue-cli3搭建项目
  • 爱情 北京女病人
  • 汉诺塔算法
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 入手阿里云新服务器的部署NODE
  • 小程序开发中的那些坑
  • 学习Vue.js的五个小例子
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • # include “ “ 和 # include < >两者的区别
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.ajax()参数及用法
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (23)Linux的软硬连接
  • (C#)获取字符编码的类
  • (day6) 319. 灯泡开关
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (强烈推荐)移动端音视频从零到上手(上)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)四层和七层负载均衡的区别
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Reactor简单使用教程
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args