Python常见陷阱

# -*- coding: utf-8 -*-
#python需要常见陷阱

print u'---------------#1. 默认值参数 Default Parameter Values---------------'

#1. 默认值参数 Default Parameter Values
#1.1 默认值参数的引入
#默认值参数的作用:还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

#计算x的平方
def power(x):
    return x * x

#再定义一个计算n次方的函数时,上面的函数就失效了
def power(x, n):
    s = 1
    while n > 0:
        n -= 1
        s *= x
    return s
#print power(2) 报错,因为后面又定义了power(x, n)
print power(2, 10)

#使用默认函数可以解决这个问题
def power(x, n=2):
    s = 1
    while n > 0:
        n -= 1
        s *= x
    return s

print power(2)
print power(2, 10)

print u'-----------1.2 默认参数值陷阱————默认值参数必须指向不变对象------------'

#1.2 默认参数值陷阱————默认值参数必须指向不变对象
#定义一个函数,传入一个list,添加一个end后再返回
def addEnd(list=[]):
    list.append('END')
    return list
print addEnd([1, 2, 3])
#但是参数使用默认值时就会出问题,函数每次都“记住了”上次添加了'END'后的list。
print addEnd(), addEnd()

#解决办法:使用不变对象None
def add_END(list=None):
    if list is None:
        list = []
    list.append('END')
    return list
#现在,无论调用多少次,都不会有问题:
print add_END(), add_END()
代码参见:github

转载于:https://www.cnblogs.com/actionke/p/4365628.html

55、Python 文档资源与常见编码陷阱 本文介绍了 Python 的文档资源和常见编码陷阱。首先,探讨了如何通过修改颜色值字符串来个性化 PyDoc,并讨论了其改进方向如 CSS 支持。其次,详细说明了 Python 3.2 及更早版本中 PyDoc GUI 客户端的启动方式、使用流程及注意事项。接着,列举了其他重要的文档资源如 Sphinx、标准手册集、网络资源和出版书籍。最后,总结了 Python 编程中的常见错误及其解决方案,并提供了表格和流程图进行可视化展示。文章旨在帮助开发者更好地利用 Python 文档工具并避免常见编程问题。 阅读详情

相关推荐

63、Python高级类主题与常见陷阱

本文深入探讨了 Python 中的高级类主题,包括静态方法和函数装饰器的使用,以及多重继承、类属性更改等常见陷阱。文章通过示例代码分析了这些特性的工作原理,并提供了最佳实践建议,帮助开发者编写高质量、易维护的面向对象代码。同时,还介绍了如何避免过度包装和复杂的继承结构,以提升代码的可读性和可维护性。

bean的博客 62

python dump函数用法_python中实现php的var_dump函数功能

最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短,很多不完善的地方。比如我在调试php中最常用的函数,var_dump,在python里找不到合适的替代函数。php中var_dump是一个特别有用的函数,它可以输出任何变量的值,不管你是一个对象还是...

weixin_39683368的博客 438

Python中的常见陷阱与技巧

这里介绍了一些常见Python陷阱和技巧,希望对你有所帮助。使用这些技巧可以避免一些常见的错误,并提高你的Python编程经验。记住,在编写Python代码时,始终要仔细阅读文档并进行测试,以确保代码的正确性和可靠性。然而,就像任何编程语言一样,Python也有一些陷阱和需要特别注意的地方。在本文中,我将介绍一些常见Python陷阱,并提供一些技巧来避免这些问题。当默认参数是可变对象(如列表或字典)时,这可能导致问题。当处理异常时,有时候我们可能会陷入一个捕获了所有异常的块中,这可能会隐藏真正的错误。

qq_39605374的博客 146

避免6大Python高级陷阱,让你的Python代码更优雅

在学习Python的过程中,你已经克服了很多常见的困难和陷阱,比如内存管理错误、多线程混乱、数据结构设计不当、元编程使用不当、动态类型带来的疑惑,以及异常处理不足等等。现在你已经掌握了Python的基础知识,这只是你编程之路的开始!编程是一个需要不断学习和提升的过程。每当遇到新的挑战时,都是锻炼自己的良机。保持一个批判性思维,把错误当成宝贵的学习资源是非常重要的。如果你持续地练习编码,并勇于探索新的领域,你一定能成为一名出色的Python开发者。

weixin_53707653的博客 980

2024年Python最全十二个坑爹的Python陷阱_python坑人

问题的本质在与python中的属性查找规则,LEGB(local,enclousing,global,bulitin),在上面的例子中,i就是在闭包作用域(enclousing),而Python的闭包是 迟绑定 , 这意味着闭包中用到的变量的值,是在内部函数被调用时查询得到的。上面的例子中,6这个元素就没有被删除。我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

2401_84692299的博客 956

Python常见编程错误和陷阱

http://blog.csdn.net/pipisorry/article/details/45175457 Introduction 本文介绍python编程中常见的错误的陷阱 潜在的Python陷阱 沉迷于一行程序 许多人热衷于一行程序带来的兴奋感。即使他们的一行解决方案比一个多行解决方案低效,他们也会吹嘘。 Python中的一行程序在本质上意味着具有多个表达式的复杂

皮皮blog 1万+

十个Python陷阱(4-7)

4. 类属性和实例属性 这边至少有两个小陷阱。第一,新手习惯于把属性放在类里面(而不是实例中),他们当看到这些属性会在实例之间共享的时候会很惊讶: >>> class Foo: ... bar = [] ... def __init__(self, x): ... self.bar.append(x) ... >>> f = Foo(42) >>> g

Carl.Chen@seu@zju 1092

Python 中的常见陷阱

每一种语言都有各自的场景, 各自的设计, 有各自的坑. 近几年来使用场景越来越广泛的 Python, 都有哪些常见的坑(陷阱). 下面是我从初学以来, 碰到过的陷阱(跟其他语言不一样的地方). 1.函数内的变量作用域 函数内部, 代码块之内定义的变量,代码块之外可以访问。 i = 10 if i>5: square = i*i print(square) 在 Java/C#/C++/C 之类的语言中, 类似上面的代码逻辑会跑错, 因为 代码运行到最后一行的时候, s...

千里之行 341

Python常见陷阱

Python学习中常见陷阱你中过几个?

zhang120529的博客 1076

python编程时常见陷阱

TOC 1、可变对象(mutable)作为默认参数引发的陷阱 不可变对象:该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。例如:数值类型(int和float)、字符串str、元组tuple都是不可变类型。 可变对象:该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后...

澜临一 513

python常见陷阱

copy to https://pythonguidecn.readthedocs.io/zh/latest/writing/gotchas.html 大多数情况下,Python的目标是成为一门简洁和一致的语言,同时避免意外情况。 然而,有些情况可能会使新人困惑。 其中一些情况是有意为之的,但可能有潜在的风险。而另一些可以说是语言的缺陷。 总的来说,下面是一些乍看起来很取巧的行为,不过只要您...

weixin_30426957的博客 184

Python常见的10个陷阱,你踩过几个?(附解决方案)

然而,即使是经验丰富的Python开发者,也难免会遇到一些"坑"。本文将介绍Python中10个最常见陷阱,帮助大家避免这些错误,写出更健壮的代码。解释:Python会缓存小整数(-5到256),大整数每次创建新对象。解释:finally中的return会覆盖try中的return。解释:Python会对短字符串进行驻留优化,但不要依赖这种行为。问题原因:默认参数在函数定义时就被创建,而不是每次调用时创建。解决方案:如果需要多次使用,可以转换为列表或重新创建生成器。问题原因:闭包中的变量是延迟绑定的。

Python_trys的博客 839

跟我一起学Python数据处理(122/127):Python编程常见陷阱深度剖析

大家好!在之前的学习中,我们对Python有了一定的了解。但在实际编程过程中,总会遇到一些让人头疼的问题,就像走进了一个个“陷阱”。今天,咱们就继续深入探讨Python编程里那些常见陷阱,一起学习进步,让大家在Python编程的道路上少走弯路。

yyy173611的博客 3736

五个常见Python陷阱,如何避免它们?

然后,在第二次和第三次调用函数时,使用相同的默认参数值,因此更改在列表中保留,导致输出 `[1,2]` 和 `[1,2,3]`。在这个例子中,`foo` 函数内部定义了一个局部变量 `x` ,并将其设置为5。在这个例子中,我们期望得到 `0.3` ,但是由于浮点数表示方式的限制,我们得到了一个接近 `0.3` 的数字。因此,在函数和函数外部打印 `x` 的值都为5。现在,我们将要删除的元素存储在一个新列表中,并在第二个循环中一次性删除它们,而不是在迭代期间修改原始列表。现在,我们得到了预期的结果。

weixin_66623438的博客 506

python常见的函数陷阱

本地变量是静态检测的 正如我们所知道的一样,Python定义的在一个函数中进行分配的变量名是默认为本地变量的,它们存在于函数的作用域并只在函数运行时存在。Python是静态检测Python的本地变量的,当编译def代码时,不是通过发现赋值语句在运行时进行检测的。这导致了在Python中入门者最为常见陷阱之一。 一般来说,没有在函数中赋值的变量名会在整个模块文件中查找。 X = 99 def

Codeway3's Dizzy Code 963
上一篇: SEP离线病毒库下载地址
下一篇: JS回调函数全解析教程
weixin_30897233
博客等级 码龄11年 106粉丝 2478原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值