GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • 莫烦PYTHON
  • 学习 ▾
  • 推荐学习顺序
  • 交互式学Python
  • 多进程 multiprocessing
  • 多线程 threading
  • 窗口视窗 Tkinter
  • 有趣的机器学习
  • 强化学习 Reinforcement Learning
  • 进化算法 Evolutionary Algorithm
  • Tensorflow
  • PyTorch
  • Theano
  • Keras

This view

  • Original page
  • New address

GeezerVison is showing mofanpy.com — 函数默认参数 | 莫烦Python

  • 支持

📢

莫烦有新起点啦!「莫烦 x 无限可能」— 关于 AI、行业、产品、教育的经验思考,欢迎来新站看看 →

切换视频源:


« 函数参数 全局 & 局部 变量 »

函数默认参数

作者: 高峰 编辑: 莫烦 发布于: 2016-01-01

我们在定义函数时有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数, 为了方便函数调用,我们可以将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出。

基本使用¶

函数声明只需要在需要默认参数的地方用 = 号给定即可, 但是要注意所有的默认参数都不能出现在非默认参数的前面。

实例¶

在这里定义了一个 sale_car 函数,参数为车的属性,但除了 price 之外,像 color, brand 和 is_second_hand 都是有默认值的,如果我们调用函数 sale_car(1000), 那么与 sale_car(1000, 'red', 'carmy', True) 是一样的效果。当然也可以在函数调用过程中传入特定的参数用来修改默认参数。通过默认参数可以减轻我们函数调用的复杂度。

进阶¶

3.1 自调用

如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试 代码,但是该脚本作为一个模块对外提供功能的时候单元测试代码也会执行,这些往往我们不想要的,我们可以把这些代码放入脚本最后:

如果执行该脚本的时候,该 if 判断语句将会是 True,那么内部的代码将会执行。 如果外部调用该脚本,if 判断语句则为 False,内部代码将不会执行。

3.2 可变参数

顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个。当然可以将这些 参数封装成一个 list 或者 tuple 传入,但不够 pythonic。使用可变参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。

定义了一个函数,传入一个参数为 name, 后面的参数 *grades 使用了 * 修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数 report('Mike', 8, 9),输出的结果为 Mike total grade is 17, 也可以这样调用 report('Mike', 8, 9, 10),输出的结果为 Mike total grade is 27

3.3 关键字参数

关键字参数可以传入0个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict).

定义了一个函数,传入一个参数 name, 和关键字参数 kw,使用了 ** 修饰。表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。如果调用参数 portrait('Mike', age=24, country='China', education='bachelor') 输出:

name is Mike
age 24
country China
education bachelor

通过可变参数和关键字参数,任何函数都可以用 universal_func(*args, **kw) 表达。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat
« 函数参数 全局 & 局部 变量 »
    教程目录

    Python基础

      安装

    • 安装

      基本使用

    • print 功能
    • 基础数学运算
    • 变量 variable

      while 和 for 循环

    • while 循环
    • for 循环

      if 判断

    • if 判断
    • if else 判断
    • if elif else 判断

      定义功能

    • def 函数
    • 函数参数
    • 函数默认参数
      • 基本使用
      • 实例
      • 进阶

      变量形式

    • 全局 & 局部 变量

      模块安装

    • 模块安装

      文件读取

    • 读写文件 1
    • 读写文件 2
    • 读写文件 3

      class 类

    • class 类
    • class 类 init 功能

      input 输入

    • input 输入

      元组, 列表, 字典

    • 元组 列表
    • list 列表
    • 多维列表
    • dictionary 字典

      模块

    • import 模块
    • 自己的模块

      其他

    • continue & break
    • try 错误处理
    • zip lambda map
    • copy & deepcopy 浅复制 & 深复制
    • threading 什么是多线程
    • multiprocessing 什么是多进程
    • 什么是 tkinter 窗口
    • pickle 保存数据
    • set 找不同
    • 正则表达式
    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.