Python 语言的细微差别

标签 python performance pep8

<分区>

Possible Duplicate:
Common Pitfalls in Python

我正在学习 Python,我来自不同的编程语言背景。在过去的五年中,我编写了大量的 Java、C++、VB.Net 和 PHP。正如你们中的许多人可能同意的那样,一旦您学习了一种编程语言,学习另一种编程语言只是了解语法和最佳实践的差异。

从 PHP 下来,我已经非常习惯了很多脚本风格的语言特性。例如,像这样的东西让我内心发痒:

# Retrieve the value from the cache; otherwise redownload.
if(!($value = $cache->get($key)))
    # Redownload the value and store in the cache.
    $cache->set($key, $value = redownload($key));

但是,Python 并不认为赋值是一个表达式。 OTOH,它确实支持像 in 构造这样的好东西,我发现它是有史以来最伟大的发明之一。 x in y!empty($y[$x]) 好得多。

我还应该注意哪些其他细微差别、“缺失”功能和性能瓶颈?我希望尽可能无缝地过渡到 Python 开发,并希望学习一些有助于缩短开发时间并消除反复试验的秘诀。感谢您的见解!

最佳答案

当我第一次在真实程序中遇到它时,我花了几个小时才弄明白:

函数的默认参数是可变的静态值。

def foo(bar = []):
  bar.append(1)
  print(bar)

foo()
foo()

这将打印

[1]
[1, 1]

关于Python 语言的细微差别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226650/

相关文章:

python - Django 1.6 名称选择未定义

python - 将 Pandas 数据帧读入 R

performance - Windows 上的 PostgreSQL shared_buffers

java - NTFS 目录有 100K 个条目。如果分布在 100 个子目录中,性能会提升多少?

python - 使 flake8 区分未定义函数和星形导入

python - 由于 ubuntu 服务器上的 PYTHONPATH,使用 pip 导入时出错

惰性可调用的 Python 依赖注入(inject)

javascript - 将 HTML 标签转义为 HTML 实体的最快方法?

python - flake8 2.4.0 不支持 pep8 1.6.2 版本?

python - 排除pep8的setup.cfg中的子目录