`
t289571130c
  • 浏览: 15796 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

形参函数python 默认形参的 一个漏洞 形参函数

阅读更多

在写这篇文章之前,xxx已经写过了几篇关于改形参函数主题的文章,想要解了的朋友可以去翻一下之前的文章

    啥也不说了,先上码代

 1 global num
 2 num = 1
 3 
 4 def test_a(a={}):
 5     global num
 6     a[num] = num
 7     num += 1
 8     print a
 9 
10 def test_b(a={}):
11     global num
12     a[num] = num
13     num += 1
14     print a
15 
16 test_a()
17 test_a()

输出结果如下:

    {1: 1}

    {1: 1, 2: 2}

    python前目还是停留在中等水平,对其中的一些现实制机还不解了。

    我常在python函数里应用默许形参。昨天学长指出了我这个漏洞。

    还真是这样,除了dict,list也会有这个问题。

    一同函数名 的默许形参是全局静态的。够恐怖吧。

    想想看,最单简的解决办法还是。在调用这些函数的地方。test_a({}) 取代test_a() 取消 默许形参。

    还有就是 制止函数 部内对 形参的任何改修 ,相当于c里的const,python 似乎没有这方面的持支

    不知大家有什么这方面的设法。

 

文章结束给大家分享下程序员的一些笑话语录: 那是习惯决定的,一直保持一个习惯是不好的!IE6的用户不习惯多标签,但是最终肯定还是得转到多标签的浏览器。历史(软件UI)的进步(改善)不是以个人意志(习惯)为转移的!

分享到:
评论

相关推荐

    Python程序设计:函数参数.pptx

    我们将从本任务出发,较为系统的学习Python中函数的定义、调用、函数的形参定义、函数的参数传递以及匿名函数和生成器函数等内容,并掌握相关的配套案例。 任务 IQ智商测试 任务知识点 函数定于与调用 函数参数 匿名...

    python函数.docx

    在上述代码中,`say_hello`是一个不接受任何参数的函数,它仅打印“Hello World!”。当我们调用`say_hello()`时,Python会执行函数体内的所有语句。 函数参数分为两种类型:形式参数(形参)和实际参数(实参)。...

    python函数形参用法实例分析

    本文实例讲述了python函数形参用法。分享给大家供大家参考。具体如下: 函数形参: 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情。这些参数就像变量一样,只不过它们的值是在我们调用...

    python函数和函数传参ppt.pptx

    Python中的函数是编程中至关重要的一个概念,它们允许我们将代码组织成可重用的模块,以便在需要的地方多次调用。函数定义通过`def`关键字开始,后跟函数名和参数列表,通常还包含文档字符串(用于解释函数作用)...

    python 函数的使用-python基础,python函数的使用说明,有python2的参考代码

    然而,Python 2支持不带括号的函数调用,如`print "Hello"`,而在Python 3中,`print`是一个函数,需要括号:`print("Hello")`。因此,如果你正在从Python 2迁移到Python 3,需要注意这些差异。 总的来说,Python...

    Python中的函数(课件)

    在Python中,定义一个函数使用`def`关键字,后面跟着函数名,函数名应该清晰地表示函数的目的。函数名后跟一个圆括号,用于放置参数。如果函数不接受参数,圆括号内依然要保留空括号。函数体是缩进的代码块,可以...

    在python中list作函数形参,防止被实参修改的实现方法

    ### 在Python中List作为函数形参,防止被实参修改的方法 #### 摘要 在Python编程中,经常会遇到需要传递列表(list)作为函数参数的情况。然而,由于Python中对象传递的特性,直接传递列表可能导致函数外部的原始数据...

    Python基础入门教程 由浅入深讲解清晰 第5章 函数的设计和使用 (共49页).ppt

    在这个例子中,尽管函数内部修改了`a`的值,但由于`a`在函数外部是一个整数,所以它在函数调用后保持不变。 3. **函数参数的传递方式**: - **位置参数**:按照函数定义中形参的顺序传入。 - **关键字参数**:...

    Python基础入门教程 Python语言编程导论05 第五章 模块与函数 (共110页).ppt

    模块(Module)是Python编程中一个重要的组织单元,它是一个包含了函数和类的文件。模块使得代码的组织更加有序,方便了代码的分发和共享。在Python中,模块可以通过导入(import)来使用,这样可以避免代码重复,...

    [Python入门及进阶笔记]Python-基础-函数小结

    函数是一段可重复使用的代码块,通过给它一个名称,可以在程序的任何地方调用。这样做的好处在于减少代码冗余,提高模块化。函数定义使用`def`关键字,结构如下: ```python def function_name(parameters): ...

    Python函数与模块PPT课件.pptx

    匿名函数LAMBDA是Python语言中的一种特殊函数,它可以在不定义函数名的情况下定义一个函数。lambda函数的格式为:lambda [参数列表]:[函数体]。lambda函数通常用于简化代码,提高代码的可读性。 Python模块是...

    python函数基础定义

    - 当一个可变对象(如列表、字典等)通过函数实参传入函数内部时,在函数内部可以直接通过局部变量来操作该可变对象。 - 不可变对象(如数字、字符串、元组等)传递给函数时,函数内部无法直接修改这些对象本身。 *...

    python:自定义函数实现加法

    如果没有`return`语句,或者`return`后面没有跟任何值,那么函数将默认返回`None`,这是Python中的一个特殊值,表示“无”或“空”。 最后,函数被调用以展示其功能。在`print(add(2, 3))`这一行中,我们向`add`...

    Python科学计算与数据处理-Python函数.ppt

    - Python函数还可以接受关键字参数,如`**kwargs`,它收集未指定位置的命名参数,并将其放入一个字典中。 6. 函数作用域: - 在函数内部定义的变量称为局部变量,只在函数内部可见。 - 在函数外部定义的变量称为...

    python 的函数和 lambda 表达式

    函数名是一个合法的标识符,形参列表由多个形参名组成,多个形参名之间以英文逗号(,)隔开。函数体是由零条或多条可执行语句组成的代码块。一个函数可以返回一个值,也可以不返回任何值,即返回None。函数定义后,...

    函数实参(Argument)与形参(Parameters)的区别及应用(默认值与实参可选) | Python

    关于形参的默认值,这允许你在定义函数时为形参指定一个默认值,使得在调用函数时不提供实参时,该形参仍能有一个预设值。默认值在形参列表中按照它们被声明的顺序定义,没有默认值的形参应该排在有默认值的形参前面...

    python教程从入门到实践第八章-《Python编程从入门到实践》-第八章-函数.pdf

    例如,`say_hello(name)`函数接收一个名为`name`的形参,然后在函数内部使用它。在调用`say_hello('Frank')`时,'Frank'作为实参传递给`name`,函数根据实参的值进行相应操作,输出"Hello! Frank"。 实参和形参是...

Global site tag (gtag.js) - Google Analytics