Python---函数---默认参数

# 默认参数
# 由于我们经常计算x2,所以,完全可以把第二个参数n的默认值设定为2

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
# 这样,当我们调用power(5)时,相当于调用power(5, 2)
print(‘print power(5)‘, power(5))
print(‘print power(5,3)‘, power(5, 3))

# 从上面的例子可以看出,默认参数都已简化函数的调用。
# 设置默认参数时,有几点需要注意
# 一是必选参数在前,默认参数在后,否则Python的解释器会报错(默认参数放在前面会产生歧义~~)
# 二是如何设置默认参数
# 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数
# 使用默认参数有什么好处?最大的好处是能降低调用函数的难度

# 定义函数enroll,把年龄和城市设为默认参数

def enroll(name, gender, age=6, city=‘Beijing‘):
    print(‘name:‘, name)
    print(‘gender:‘, gender)
    print(‘age:‘, age)
    print(‘city‘, city)
# 这样,大多数学生注册时不需要提供年龄和城市,只提供必须的两个参数
enroll(‘Sarah‘, ‘F‘)
# 只要与默认参数不符的学生才需要提供额外的信息
# 有多个默认参数时,调用的时候既可以按顺序提供默认参数,也可以不按顺序提供默认参数
enroll(‘Bob‘, ‘M‘, 7)
# 当不按顺序提供部分默认参数时,需要把参数名写上
enroll(‘Adam‘, ‘M‘, city=‘Tianjin‘)

# 下面代码演示默认参数中的一个坑

def add_end(L=[]):
    L.append(‘END‘)
    return L
# 第一次调用add_end
print(add_end())
# 第二次调用add_end
print(add_end())
# Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[]
# 每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了
# 所以,定义默认参数要牢记:默认参数必须指向不变对象

# 要修改上面的例子,我们可以用None这个不变对象来实现

def add_end(L=None):
    if L is None:
        L = []
    L.append(‘END‘)
    return L
print(add_end())
print(add_end())
时间: 2024-08-07 21:17:40

Python---函数---默认参数的相关文章

python 函数默认参数的小坑

默认参数和可变对象 在执行def语句时,默认参数的值只被解析并保存一次,而不是每次在调用函数的时候.这通常是你想要的那样,但是因为默认值需要在每次调用时都保持同样对象,你在试图改变可变的默认值(mutable defaults)的时候可要小心了.例如,下面的函数中使用一个空的列表作为默认值,然后在之后每一次函数调用的时候改变它的值: 1 2 3 4 5 6 7 8 9 10 11 12 >>> def saver(x=[]):   # 保存一个列表对象 ...     x.append(

python函数默认参数为可变对象的理解

1.代码在执行的过程中,遇到函数定义,初始化函数生成存储函数名,默认参数初识值,函数地址的函数对象. 2.代码执行不在初始化函数,而是直接执行函数体. 代码实例 这要从函数的特性说起,在 Python 中,函数是第一类对象(function is the first class object),换而言之,函数也是对象,跟整数.字符串一样可以赋值给变量.当做参数传递.还可以作为返回值.函数也有自己的属性,比如函数的名字.函数的默认参数列表. # 函数的名字 >>> func.__name_

python函数默认参数陷阱

对于学习python的人都有这样的困惑 def foo(a=[]): a.append(5) return a Python新手希望这个函数总是返回一个只包含一个元素的列表:[5].结果却非常不同,而且非常惊人(对于新手来说): >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] >>> foo() 实际上,这不是设计缺陷

【C/C++学院】0813-C与CPP不同以及命名空间简介/函数重载与函数默认参数/泛型auto/Newdelete

C与CPP不同以及命名空间简介 命名空间在软件设计中的作用就是为了实现迭代式开发. 命名空间的别名 #include <iostream> namespace runrunrunrun { int a(10); char *str("gogogo"); namespace run //命名空间的嵌套 { int a(9); } } namespace runrunrunrun //命名空间的拓展 { int y(5); //int a(15);重定义错误 } namespa

C++函数默认参数(转)

在代码中使用到了函数的默认参数,在函数的定义和实现中都填写的默认参数,结果出现了错误: 代码: 1 #ifndef FIRSTPAGE_H 2 #define FIRSTPAGE_H 3 4 #include <QWizardPage> 5 #include "ui_firstdialog.h" 6 7 class FirstPage : public Ui::FirstDialog, public QWizardPage 8 { 9 public: 10 FirstPag

&lt;C++&gt; 函数默认参数 函数重载 引用

一.函数默认参数 1.缺省参数:就是在声明函数的某个参数的时候 给他一个默认值 1 #include<iostream> 2 using namespace std; 3 4 void Show(int a = 1,int b = 2,int c = 3) 5 { 6 cout << a << endl; 7 cout << b << endl; 8 cout << c << endl; 9 } 10 11 int mai

C/C++ Python的函数默认参数

发现C/C++  Python的函数可以使用默认参数,来减少传参时候的参数个数. 但是:这样的默认参数最好是不变对象! #include <stdio.h> #include <string.h> void func_1(int id, char s[], char city[] = "Bejing") { printf("%d, %s, %s",id, s, city); } int main() { func_1(1, "李金旭

Python之路【第三篇】:Python基础(14)——函数默认参数

# 默认参数:必须放置在形式参数列表的最后 # def send(name,xx = "ok"):# ...# # 使用默认参数# send("eric") #对形式参数的第一个元素赋值,第二个元素使用默认参数.# # 指定参数# send("eric","no") #对形式参数的第一个元素赋值,第二个元素的默认参数重新赋值.# # def send(mail_addr,xx = "ok",content,

Python 函数的参数知识汇总

函数搞不熟,后边就晕头转向了,在此重新归纳一下廖大神的函数教程,加深记忆 一.函数的参数分为: 位置参数 1 def power(x): # x 就是power(x)的一个位置参数,我们调用power(x)必须传入一个参数x 2 return x * x 默认参数 1 def power(x, n=2): #修改后的power()函数有两个位置参数,调用函数时如果传入两个参数,会依次传给x,n; 2 s = 1 #如果仅仅传入一个参数的话,那么n=2就是一个默认参数,默认为2,这就是默认参数 3

Python函数的参数

各种语言都有它自己特定的函数参数定义方法.Python语言对于函数参数的定义非常灵活,它提供了三种定义函数参数的方式.一起来看看吧,希望对大家学习python有所帮助. 1. Positional arguments位置参数 这是Python中最简单的给函数传递参数的方式.当调用函数时,调用代码中的函数参数与函数定义时的参数的顺序一致.例如: >>> defpower(x, y):... r = 1... while y > 0:... r = r * x... y = y - 1