手机
当前位置:查字典教程网 >脚本专栏 >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 多线程应用介绍

Python日期操作学习笔记

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

Python 代码性能优化技巧分享

简明 Python 基础学习教程

Python笔记(叁)继续学习

python实现博客文章爬虫示例

Python函数学习笔记

python文件比较示例分享

Python的一些用法分享

精品推荐
分类导航