zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python函数缺省值与引用学习笔记分享

Python笔记学习 函数 分享 引用 缺省值
2023-06-13 09:14:45 时间

复制代码代码如下:


importrandom,string
classC(object):   pass
defdangerFunction(msg,l=[],b={},c=C()):
   printmsg,"-"*10
   printl,b,c.__dict__
   l.append(1)
   b[random.choice(string.ascii_lowercase)]=""
   c.__dict__[random.choice(string.ascii_lowercase)]=""
   printl,b,c.__dict__
dangerFunction("1")
dangerFunction("2")
dangerFunction("3")
print"-"*20
defsafeFunction(msg,l=None,b=None,c=None):
   ifnotl:  l=[]
   ifnotb:  b={}
   ifnotc:  c=C()
   printmsg,"-"*10
   printl,b,c.__dict__
   l.append(1)
   b[random.choice(string.ascii_lowercase)]=""
   c.__dict__[random.choice(string.ascii_lowercase)]=""
   printl,b,c.__dict__
safeFunction("1")
safeFunction("2")
safeFunction("3")

运行结果:
复制代码代码如下:

1----------
[]{}{}
[1]{"q":""}{"p":""}
2----------
[1]{"q":""}{"p":""}
[1,1]{"q":"","a":""}{"p":"","g":""}
3----------
[1,1]{"q":"","a":""}{"p":"","g":""}
[1,1,1]{"q":"","a":"","w":""}{"p":"","w":"","g":""}
--------------------
1----------
[]{}{}
[1]{"k":""}{"l":""}
2----------
[]{}{}
[1]{"r":""}{"c":""}
3----------
[]{}{}
[1]{"q":""}{"h":""}

由dangerFunction打印出来的结果来看,缺省值为[],(),class
再下次调用时,如果继续参数空缺而使用缺省值,那么缺省值延续上次引用。

可能打印无任何标志无法看清楚,加上文字应该会简单很多。

复制代码代码如下:
#-*-coding:utf-8-*-
importrandom,string
classC(object):   pass
defdangerFunction(msg,l=[],b={},c=C()):
   printmsg,"-"*10
   printu"操作前",l,b,c.__dict__
   l.append(1)
   b[random.choice(string.ascii_lowercase)]=""
   c.__dict__[random.choice(string.ascii_lowercase)]=""
   printu"操作后",l,b,c.__dict__
dangerFunction("1")
dangerFunction("2")
dangerFunction("3")
print"-"*10,u"我是分隔符","-"*10
defsafeFunction(msg,l=None,b=None,c=None):
   ifnotl:  l=[]
   ifnotb:  b={}
   ifnotc:  c=C()
   printmsg,"-"*10
   printu"操作前",l,b,c.__dict__
   l.append(1)
   b[random.choice(string.ascii_lowercase)]=""
   c.__dict__[random.choice(string.ascii_lowercase)]=""
   printu"操作后",l,b,c.__dict__
safeFunction("1")
safeFunction("2")
safeFunction("3")

复制代码代码如下:
1----------
操作前[]{}{}
操作后[1]{"m":""}{"v":""}
2----------
操作前[1]{"m":""}{"v":""}
操作后[1,1]{"i":"","m":""}{"g":"","v":""}
3----------
操作前[1,1]{"i":"","m":""}{"g":"","v":""}
操作后[1,1,1]{"i":"","s":"","m":""}{"s":"","g":"","v":""}
----------我是分隔符----------
1----------
操作前[]{}{}
操作后[1]{"e":""}{"q":""}
2----------
操作前[]{}{}
操作后[1]{"d":""}{"s":""}
3----------
操作前[]{}{}
操作后[1]{"m":""}{"k":""}