函数默认值python 函数默认值参数Python

python 函数中怎么实现static 变量

Python使用函数默认值实现函数静态变量的方法,具体方法如下:

成都创新互联公司是专业的西秀网站建设公司,西秀接单;提供成都网站制作、网站建设、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行西秀网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一、Python函数默认值

Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了。 所以函数默认值在python中用到的很多,尤其是在类中间,类的初始化函数中一帮都会用到默认值。 使用类时能够方便的创建类,而不需要传递一堆参数。

只要在函数参数名后面加上 ”=defalut_value”,函数默认值就定义好了。有一个地方需要注意的是,有默认值的参数必须在函数参数列表的最后,不允许将没有默认值的参数放在有默认值的参数后,因为如果你那样定义的话,解释器将不知道如何去传递参数。

先来看一段示例代码:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):

while True:

ok = raw_input(prompt)

if ok in ('y', 'ye', 'yes'): return True

if ok in ('n', 'no', 'nop', 'nope'): return False

retries = retries - 1

if retries 0: raise IOError, 'refusenik user'

print complaint

你调用上面的函数时,可以修改重试次数和输出的提示语言,如果你比较懒得话,那么什么都不用改。

二、python使用函数默认值来实现函数静态变量的功能

Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能。

当函数的默认值是内容是可变的类时,类的内容可变,而类的名字没变。(相当于开辟的内存区域没有变,而其中内容可以变化)。

这是因为python中函数的默认值只会被执行一次,(和静态变量一样,静态变量初始化也是被执行一次。)这就是他们的共同点。

再来看下面的程序片段:

def f(a, L=[]):

L.append(a)

return L

print f(1)

print f(2)

print f(3)

print f(4,['x'])

print f(5)

其输出结果是:

[1]

[1, 2]

[1, 2, 3]

['x', 4]

[1, 2, 3, 5]

前面的好理解,为什么最后 “print f(5)”的输出是 “[1, 2, 3, 5]”呢?

这是因为 “print f(4,['x'])”时,默认变量并没有被改变,因为默认变量的初始化只是被执行了一次(第一次使用默认值调用),初始化执行开辟的内存区(我们可以称之为默认变量)没有被改变,所以最后的输出结果是“[1, 2, 3, 5]”。

关于python带默认值的参数只能放在后面的问题

第一个那个*x是*args的意思,就是任意个参数,C++里的 va_arg,...符号这种,python函数里可以有*args和**kwargs。

*args之后可以随便放有默认值的和没有默认值的。

因为这之后的任何东西都得用”y=1“”z=1“这种来赋值。

比如说第一个函数,def fun(*x, y=4, z),我写fun(1,2,3,4,5),这五个数全跑到*x里了。我想给y和z赋值必须要写fun(1,2,3,4,5,y=6,z=7)。相当于z跟有默认值的那种也差不多了。所以规定可以把z放在*x后面的任何位置,包括y=4后面,它们的位置关系已经没有用了。

规定def fun(x=4, y) y必须放在x前,就是要保留这种位置关系,要不我写fun(1),你说这个1是给x的还是y的?就有了歧义。所以必须要有正确的位置关系。但是*x后面所有东西都是用参数名赋值的,位置关系不起作用了,所以可以任意顺序了。

要理解规定背后的原因。同理,**kwargs放在最后,也是这个原因。消除歧义性。

python函数中的default怎么理解

default是你传递进去的函数参数。是一个带有默认值的参数,也就是在调用这个函数的时候可以不用给它赋值。

python 函数参数没有默认值怎么表示

没有默认值,你不设置就是了,如:

def GetLibraryGroup(name, groupKey='month', orderBy = ’name’):

上面的函数定义中,name没有给默认值,其余的都给了,调用时,相应的参数如果你不给值,那么函数会以默认值来运行,比如

GetLibraryGroup('filetable'),这个调用没有给groupKey,orderBy 两个参数,但是函数定义时,给了默认的值,就相当于GetLibraryGroup('filetable','month',,’name’)了,当然如果你调用时给默认的参数赋了其他值,那么以你的调用为准,如

GetLibraryGroup('filetable','year',,’createTime’),这个调用groupKey,orderBy两个参数就会是你调用时给的'year',,’createTime’。

Python中定义函数默认参数值的使用注意事项?

4.7.1. 默认参数值

最常用的一种形式是为一个或多个参数指定默认值。这会创建一个可以使用比定义是允许的参数更少的参数调用的函数,例如:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):

while True:

ok = input(prompt)

if ok in ('y', 'ye', 'yes'):

return True

if ok in ('n', 'no', 'nop', 'nope'):

return False

retries = retries - 1

if retries 0:

raise OSError('uncooperative user')

print(complaint)

这个函数可以通过几种不同的方式调用:

只给出必要的参数:

ask_ok('Do you really want to quit?')

给出一个可选的参数:

ask_ok('OK to overwrite the file?', 2)

或者给出所有的参数:

ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')

这个例子还介绍了 in 关键字。它测定序列中是否包含某个确定的值。

默认值在函数 定义 作用域被解析,如下所示:

i = 5

def f(arg=i):

print(arg)

i = 6

f()

将会输出 5。

重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:

def f(a, L=[]):

L.append(a)

return L

print(f(1))

print(f(2))

print(f(3))

这将输出:

[1]

[1, 2]

[1, 2, 3]

如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:

def f(a, L=None):

if L is None:

L = []

L.append(a)

return L


当前标题:函数默认值python 函数默认值参数Python
文章URL:http://pwwzsj.com/article/hjjdch.html