手机
当前位置:查字典教程网 >脚本专栏 >python >python函数缺省值与引用学习笔记分享
python函数缺省值与引用学习笔记分享
摘要:复制代码代码如下:importrandom,stringclassC(object):passdefdangerFunction(msg,l...

复制代码 代码如下:

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': ''}

【python函数缺省值与引用学习笔记分享】相关文章:

python操作MySQL数据库的方法分享

Python天气预报采集器实现代码(网页爬虫)

Python标准库与第三方库详解

Python日期操作学习笔记

python实现博客文章爬虫示例

python二叉树的实现实例

学习python的几条建议分享

Python使用稀疏矩阵节省内存实例

python通过urllib2爬网页上种子下载示例

Python的函数嵌套的使用方法

精品推荐
分类导航