网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 python函数缺省值与引用学习笔记分享
内容
    有关一个在函数参数设置缺省值与引用的问题,这个问题是大多数Pythoner可能会忽视的问题,作个笔记,以备后阅,同时供需要的朋友参考
    代码如下:
    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':''}
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/19 9:50:59