复制代码 代码如下:
import random, string
class C(object): pass
def dangerFunction(msg, l = [], b = {}, c = C()):
print msg, '-'*10
print l, b, c.__dict__
l.append(1)
b[random.choice(string.ascii_lowercase)] = ''
c.__dict__[random.choice(string.ascii_lowercase)] = ""
print l, b, c.__dict__
dangerFunction('1')
dangerFunction('2')
dangerFunction('3')
print '-'*20
def safeFunction(msg, l = None, b = None, c = None):
if not l: l = []
if not b: b = {}
if not c: c = C()
print msg, '-'*10
print l, b, c.__dict__
l.append(1)
b[random.choice(string.ascii_lowercase)] = ''
c.__dict__[random.choice(string.ascii_lowercase)] = ""
print l, 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 -*-
import random, string
class C(object): pass
def dangerFunction(msg, l = [], b = {}, c = C()):
print msg, '-'*10
print u'操作前', l, b, c.__dict__
l.append(1)
b[random.choice(string.ascii_lowercase)] = ''
c.__dict__[random.choice(string.ascii_lowercase)] = ""
print u'操作后', l, b, c.__dict__
dangerFunction('1')
dangerFunction('2')
dangerFunction('3')
print '-' * 10, u'我是分隔符', '-' * 10
def safeFunction(msg, l = None, b = None, c = None):
if not l: l = []
if not b: b = {}
if not c: c = C()
print msg, '-'*10
print u'操作前', l, b, c.__dict__
l.append(1)
b[random.choice(string.ascii_lowercase)] = ''
c.__dict__[random.choice(string.ascii_lowercase)] = ""
print u'操作后',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': ''}
函数缺省值
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。