函数之关键参数

关键参数
如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作 关键参数 ——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。
这样做有两个 优势 ——一,由于我们不必担心参数的顺序,使用函数变得更加简单了。二、假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。
使用关键参数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

例7.6 使用关键参数

#!/usr/bin/python
# Filename: func_key.py
def func(a,b=5,c=10):
  print ‘a is‘,a,‘and b is‘,b,‘and c is‘,c
func(3,7)
func(25,c=24)
func(c=50,a=100)

输出
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
它如何工作
名为func的函数有一个没有默认值的参数,和两个有默认值的参数。
在第一次使用函数的时候, func(3, 7),参数a得到值3,参数b得到值7,而参数c使用默认值10。
在第二次使用函数func(25, c=24)的时候,根据实参的位置变量a得到值25。根据命名,即关键参数,参数c得到值24。变量b根据默认值,为5。
在第三次使用func(c=50, a=100)的时候,我们使用关键参数来完全指定参数值。注意,尽管函数定义中,a在c之前定义,我们仍然可以在a之前指定参数c的值。

时间: 2024-08-05 07:07:10

函数之关键参数的相关文章

python函数之默认参数 | 关键参数 | 全局变量 | return

默认参数: 关键参数: Tips1:字符串的引用 return 全局变量:1位置的job是参数,ll是变量,两者是不一样的, 报错的情况:

Javascript中关键参数this浅析

自从接触javascript以来,对this参数的理解一直是模棱两可.虽有过深入去理解,但却也总感觉是那种浮于表面,没有完全理清头绪.废话不多,先看一个板栗: var test = function(){}; test.prototype = { foo:"apple", fun:function(){ this.foo="banana"; } }; var myTest = new test(); myTest.fun(); console.log(myTest.

ZMAN的学习笔记之Python篇:函数可变长参数

ZMAN的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 这次来聊聊Python中函数的“可变长参数”,在实际中经常会用到哦~  一.什么是“可变长参数” “可变长参数”就是向一个函数传入不定个数的参数.比如我写一个函数:传入一个学生参加各科目考试的成绩,求平均分,如两个学生分别传入(92, 91, 88)和(88, 95),因为每个学生参加的考试个数不同,因此传入的参数个数也就不同了,遇到这种情况,我们在定义函数的时候,可以使用“可变长参数”. 二.在定义函数时使用“可变长参数

mysql的explain关键参数

一.关键参数 type system最好,到ref,一般就认为达标了.ALL和index最差,必须要进行优化. 联接类型.下面给出各种联接类型,按照从最佳类型到最坏类型进行排序: system: 表仅有一行(=系统表).这是const联接类型的一个特例. const: 表最多有一个匹配行,它将在查询开始时被读取.因为仅有一行,在这行的列值可被优化器剩余部分认为是常数.const表很快,因为它们只读取一次! eq_ref: 对于每个来自于前面的表的行组合,从该表中读取一行.这可能是最好的联接类型,

mysql的"双1设置"-数据安全的关键参数(案例分享)

mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性的关键参数.下面从参数含义,性能,安全角度阐述两个参数为不同的值时对db 性能,数据的影响. 一.参数意义 innodb_flush_log_at_trx_commit如果innodb_flush_log_at_trx_commit设置为0:log buffer将每秒一次地写入log file中,并且log

关于python的函数的*和**参数:

1.将足够的参数解包以后传递给函数:>def f(p1, p2, p3, p4):>     print p1+p2+p3+p4>>li = [1, 2, 3, 4]>f(*li)10>>tu = (1, 2, 3, 4)>f(*tu)10>>di = {'p1':1, 'p2':2, 'p3':3, 'p4':4}>f(**di)>10 2.使用封包的方法访问多余的参数>>> def funct(*para, **

es6函数的rest参数和拓展运算符(...)的解析

es6的新特性对函数的功能新增加了rest参数和...的拓展运算符.这是两个什么东西呢? 先来看一个问题:如何获取一个函数除了定义的参数之外的其他参数?传统的做法是借助函数的arguments关键字来获取的. 方法如下: function add(a,b){ var i=2,rest=[]; if(arguments.length>2){ for(i;i<arguments.length;i++){ rest.push(arguments[i]); } } return rest; } con

destoon手机端mobileurl函数增加城市分类参数

mobileurl函数在include/global.func.php 858行 共四个参数,moduleid-模型id,catid-分类id,itemid -文章id,page-页码 function mobileurl($moduleid, $catid = 0, $itemid = 0, $page = 1) { if(RE_WRITE) return $moduleid.'-'.$catid.'-'.$itemid.'-'.$page.'.html'; if($itemid) { ret

C++虚函数的默认参数问题

#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: Base(int i):m_num(i) { cout<<"Base Constructor"<<endl; } virtual ~Base() { cout<<"Base Deconstruc