函数之默认参数

默认参数值
对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。
注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的——这会在后面的章节中做详细解释。从现在开始,请记住这一点。
使用默认参数值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

例7.5 使用默认参数值

#!/usr/bin/python
# Filename: func_default.py
def say(message,times=1):
  print message * times;
# if (a==1):
#修改默认参数值
# times=2
# print message * times;
#a=1
say(‘hello‘)
say(‘world‘,5)

输出
$ python func_default.py
Hello
WorldWorldWorldWorldWorld

它如何工作
名为say的函数用来打印一个字符串任意所需的次数。如果我们不提供一个值,那么默认地,字符串将只被打印一遍。我们通过给形参times指定默认参数值1来实现这一功能。
在第一次使用say的时候,我们只提供一个字符串,函数只打印一次字符串。在第二次使用say的时候,我们提供了字符串和参数5,表明我们想要 说 这个字符串消息5遍。
重要只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。这是因为赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是有效的,但是def func(a=5, b)是 无效 的。

时间: 2024-08-25 18:45:41

函数之默认参数的相关文章

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

没有躲过的坑--C++函数的默认参数(重新定义默认参数)

默认参数指的是当函数调用中省略了实参时,自动使用一个值. 这里首先需要注意的是: 对于带参数列表的函数,必须从右向左添加默认值. 也就是说,要为某个参数设置默认值,则必须为它右边的所有参数提供默认值. 今天遇到的坑儿,就是函数使用默认参数,并且函数的声明和定义是分开的. char* left(const char* str, int n=1); int main() { } char* left(const char* str, int n = 1)//错误 { } 上面代码可以有两种修改: 1

C++函数:默认参数的函数

1.默认参数的目的 C++可以给函数定义默认参数值.通常,调用函数时,要为函数的每个参数给定对应的实参.例如: void delay(int loops); //函数声明 void delay(int loops) //函数定义 { if(100ps==0) return; for(int i=0;i<loops,i++); } 无论何时调用delay()函数,都必须给loops传一个值以确定时间.但有时需要用相同的实参反复调用delay()函数.C++可以给参数定义默认值.如果将delay(

从汇编看c++函数的默认参数

在c++中,可以为函数提供默认参数,这样,在调用函数的时候,如果不提供参数,编译器将为函数提供参数的默认值.下面从汇编看其原理. 下面是c++源码: int add(int a = 1, int b = 2) {//参数a b有默认值 return a + b; } int main() { int c= add();//不提供参数 } 下面是mian函数里面的汇编码: ; 4 : int main() { push ebp mov ebp, esp push ecx;为局部变量c分配了4字节的

PHP_零基础学php_3PHP函数、传参函数、默认参数、函数返回值

<?php function say_hello() //无参数 { $name="tang"; echo "hello,".$name; echo "<br />"; echo "<hr />"; } say_hello();//函数调用 function say_helloS($some_name)//有参数 { echo "hello,".$some_name; echo

JavaScript函数的默认参数(default parameter)

JavaScript函数的默认参数(default parameter) js函数参数的默认值都是undefined, ES5里,不支持直接在形参里写默认值.所以,要设置默认值,就要检测参数是否为undefined,按需求赋值. function multiply(a, b) { b = typeof b !== 'undefined' ? b : 1; return a*b; } multiply(5); // 5 multiply(5, 0); // 0 上面是MDN的相关例子,是比较严谨的

Python函数的默认参数的设计【原创】

在Python教程里,针对默认参数,给了一个“重要警告”的例子: def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print(f(3)) 默认值只会执行一次,也没说原因.会打印出结果: [1] [1, 2] [1, 2, 3] 因为学的第一门语言是Ruby,所以感觉有些奇怪. 但肯定的是方法f一定储存了变量L. 准备知识:指针 p指向不可变对象,比如数字.则相当于p指针指向了不同的内存地址. p指向的是可变对象,比如lis

Effective C++ .37 virtual函数中默认参数的表现

#include <iostream> #include <cstdlib> using namespace std; class Pen { public: virtual void write(int color = 0) { cout<<"write with color:"<<color<<endl; } }; class Pencil : public Pen{ public: void write(int colo

内联函数、默认参数和函数占位参数

内联函数 定义:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质.内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处.编译时,类似宏替换,使用函数体替换调用处的函数名.一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理. C++中的const常量可以替代宏常数定义,如: const int A = 3; ? #define A 3 C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!) C++

重载函数和默认参数的函数

代码说事 重载的参数匹配 1 /// *重载的匹配顺序 1: 严格匹配 2: 转换匹配 2 /// *重申 : 重载的判断依据 !形参的! 个数 类型 位置 3 /// * 返回值类型不作为重载依据 4 /// * 默认参数 不能用于区分重载函数 5 6 #include <bits/stdc++.h> 7 using namespace std; 8 9 /// 转换 的匹配 10 double b; 11 void print(int a); 12 void print(char c);