当您开始学习Python时,您希望了解什么?
我已决定学习Python3。对于以前的那些人,您觉得在此过程中最有用的是什么,希望您早日知道?
Undistraction asked 2020-02-18T03:34:28Z
29个解决方案
57 votes
我早在1.5.2发行版之前就学习过Python,所以那时对我来说很关键的事情可能不是今天的关键事情。
话虽这么说,这一关键的事情花了我一些时间才意识到,但是我现在认为至关重要:标准库和内置组件实际上提供了其他语言将使之固有的许多功能。
语言本身既小又简单,但是直到您熟悉标准库的内置函数和“核心部分”(例如,如今的sys、itertools、collections、copy等...), 一遍又一遍地重新发明轮子。 因此,您花费更多的时间来熟悉这些部分,您的进度就会越顺利。 每次您有任务要执行时,语言似乎都无法直接支持它,首先要问自己:标准库中的哪些内置程序或模块将使任务变得更加简单,甚至全部完成 为了我? 有时不会有任何东西,但通常会通过遵循这种思维方式找到出色的解决方案。
Alex Martelli answered 2020-02-18T03:34:46Z
33 votes
我希望我不懂Java。
更多功能编程。 (请参阅itertools模块,列表理解,map(),reduce()或filter())
Alexandru answered 2020-02-18T03:35:11Z
28 votes
列表理解(清晰地创建列表):
[x for x in y if x > z]
生成器扩展(与列表理解相同,但直到使用后才求值):
(x for x in y if x > z)
Paul Tarjan answered 2020-02-18T03:35:36Z
25 votes
两件令人费解的事情。 其中之一不适用于Python 3。
a = 095
不起作用 为什么? 前导零是八进制文字。 9在八进制文字中无效。
def foo( bar=[] ):
bar.append( 1 )
return bar
不起作用 为什么? 可变的默认对象被重用。
S.Lott answered 2020-02-18T03:36:05Z
20 votes
import的用途是什么。
该import和zip都将seq设置为None。
使用import删除重复项。
import和zip模块中的几乎所有内容。
函数参数的import和zip前缀如何工作。
函数的默认参数在内部如何工作(即import是什么)。
如何(为什么,实际上)设计功能,使其与import和zip结合使用。
import在课程中的作用。
import实际上是做什么的。
Robert Rossney answered 2020-02-18T03:37:00Z
17 votes
了解如何使用iPython制表符已完成。使用“ whos”查看名称空间中的所有元素。
导入模块后,很容易查看代码:
>>> import os
>>> os?? # this display the actual source of the method
>>> help() # Python's interactive help. Fantastic!
大多数Python模块都有详细的文档记录; 从理论上讲,您可以学习iPython,而您需要了解的其他内容可以通过同一工具学习。
iPython还具有调试模式pdb()。最后,您甚至可以将iPython用作启用python的命令行。 基本的UNIX命令用作%magic方法。 任何不是魔术命令的命令都可以执行:
>>> os.system('cp file1 file2')
BryanWheelock answered 2020-02-18T03:37:34Z
16 votes
没有类型的变量名。 例如,不要将变量命名为“ file”或“ dict”
inspectorG4dget answered 2020-02-18T03:37:54Z
13 votes
装饰器。 编写自己的东西不是您可能想立即做的事情,但是知道从一开始就可以使用2752459818618664461312和2752459818664464461313(以及两者之间的区别)是一个真正的优势。
David Berger answered 2020-02-18T03:38:15Z
7 votes
在外壳上的任何对象,类或路径上使用python -i yourscript.py
您可以在代码中的任意位置运行python -i yourscript.py,它将在该位置启动python shell
您可以运行python -i yourscript.py在yourscript.py结尾处启动外壳
ʞɔıu answered 2020-02-18T03:38:44Z
5 votes
最有用的:深入Python。 正如评论者所指出的那样,如果您正在学习Python 3,则更适合使用Dive Into Python 3。
很快就会知道:virtualenv。
Hank Gay answered 2020-02-18T03:39:08Z
5 votes
单个项目的元组必须以逗号结尾,否则将不会被解释为元组。
' '.join()非常方便(是,2便士)
' '.join()在重新测试模块同时对从属模块进行大量快速更改时非常有用。
并尽可能多地学习常见的“习惯用语”,否则,当习惯用语确实被认为是最好的方式时(例如' '.join()这样的丑陋表达,或者为什么这样的答案),您将大吃一惊,寻找一种更好的方法来做某事 没有isInt(string)函数....答案是,您可以尝试使用“可能的”整数进行包装:尝试然后捕获异常(如果它不是有效的int的话)。该解决方案效果很好,但听起来像是 当您初次遇到它时,答案很糟糕,因此您可能会浪费大量时间说服自己,这确实是一个好方法。
这些东西浪费了我几个小时的时间来确定我认为有些错误的代码的初稿确实可以接受。
python.org的读物:
[http://wiki.python.org/moin/BeginnerErrorsWithPythonProgramming][http://wiki.python.org/moin/PythonWarts]
Kilo answered 2020-02-18T03:39:56Z
4 votes
如果您是刚接触Python的人,请列出其理解力(不是来自较早的版本)。
Justin R. answered 2020-02-18T03:40:16Z
4 votes
关闭。 简洁明了,而不必像其他语言(例如Java)那样使用策略模式
Julson Lim answered 2020-02-18T03:40:36Z
4 votes
如果您从一本好书中学习,它不仅会教您语言,还会教您常见的成语。 这些成语很有价值。
例如,下面是用列表初始化类实例的标准用法:
class Foo(object):
def __init__(self, lst=None):
if lst is None:
self.lst = []
else:
self.lst = lst
如果您从一本书中将其作为习语学习,则不必学习为什么这是标准习语的艰辛方法。 @ S.Lott已经解释了这一点:如果您尝试将默认的初始化方法设为一个空列表,则该空列表仅会被评估一次(在编译时),并且您的类的每个默认初始化的实例都会获得相同的列表实例, 不是这里想要的。
一些习惯用法可以保护您免受意外影响; 一些帮助您从语言中获得最佳性能; 还有一些只是样式的小问题,可以帮助其他Python爱好者更好地理解您的代码。
我从《学习Python》一书中学到了知识,并向我介绍了一些习语。
这是一个专门用于习语的网页:[http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html]
附言 遵循最佳实践Python习惯用法的Python代码通常称为“ Pythonic”代码。
steveha answered 2020-02-18T03:41:24Z
4 votes
在了解os.walk()之前,我手动实现了很多递归目录遍历
Dan Monego answered 2020-02-18T03:41:44Z
3 votes
Lambda函数
[http://www.diveintopython.org/power_of_introspection/lambda_functions.html]
Alan S answered 2020-02-18T03:42:08Z
3 votes
我最近了解到的最酷的事情之一是命令模块:
>>> import commands
>>> commands.getoutput('uptime')
'18:24 up 10:22, 7 users, load averages: 0.37 0.45 0.41'
就像os.popen或os.system一样,但是没有所有的DeprecationWarnings。
而且不要忘了PDB(Python调试器):
% python -m pdb poop.py
jathanism answered 2020-02-18T03:42:37Z
3 votes
在IPython中进入交互模式
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell()
pufferfish answered 2020-02-18T03:42:57Z
3 votes
当我开始使用python时,从示例中的主要方法开始。 这是因为我并不了解,之后我发现了如何创建更好的main方法。
daramarak answered 2020-02-18T03:43:18Z
2 votes
顺序导入会覆盖:
如果您这样导入两个文件:
from foo import *
from bar import *
如果foo.py和bar.py都具有一个名为fubar()的函数,并且以此方式导入了文件,则在调用fubar时,将执行bar.py中定义的fubar。 避免这种情况的最好方法是:
import foo
import bar
然后调用foo.fubar或bar.fubar。 这样,您始终知道将执行fubar的哪个文件定义。
inspectorG4dget answered 2020-02-18T03:43:51Z
2 votes
也许触摸会更高级,但是我希望我知道您不使用线程来利用(C)python中的多个内核。 您使用multiprocessing库。
jcdyer answered 2020-02-18T03:44:12Z
2 votes
制表符补全和常规readline支持,包括历史记录,甚至在常规python shell中也是如此。
$ cat ~/.pythonrc.py
#!/usr/bin/env python
try:
import readline
except ImportError:
print("Module readline not available.")
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
import os
histfile = os.path.join(os.environ["HOME"], ".pyhist")
try:
readline.read_history_file(histfile)
except IOError:
pass
import atexit
atexit.register(readline.write_history_file, histfile)
del os, histfile
然后在您的.bashrc中添加一行
export PYTHONSTARTUP=~/.pythonrc.py
这两件事导致了一种探索性的编程风格,“它看起来像这个库可以满足我的要求”,因此我启动了python shell,然后使用tab-completion和help()命令四处摸索,直到找到我想要的东西为止 需要。
生成器和列表推导比您想象的要有用。 不要只是忽略它们。
Peter Boothe answered 2020-02-18T03:44:46Z
1 votes
我希望我精通一种功能语言。 在玩了Clojure之后,我意识到很多Python的功能思想都是从Lisp或其他功能lang借来的
GabiMe answered 2020-02-18T03:45:06Z
1 votes
我希望我马上就知道如何在Python中惯用地编码。 您可以选择喜欢的任何语言并开始使用C,Java等语言进行编码。但是理想情况下,您将学习以该语言的“精神”进行编码。 Python特别相关,因为我认为它具有自己的确定风格。
虽然在我的Python生涯中发现它的时间比我想要的晚一些,但这篇出色的文章总结了许多Python习惯用法和使它与众不同的一些小技巧。 到目前为止,人们在回答中提到的几件事包含在其中:像Pythonista一样的代码:惯用的Python。
请享用!
Matt Baker answered 2020-02-18T03:45:36Z
1 votes
漂亮的印刷:
>>> print "%s world" %('hello')
hello world
字符串的%s
%d代表整数
%f表示浮动
%.xf表示浮点数正好x个小数位。 如果浮点数表示的小数位数较少,那么将添加0
inspectorG4dget answered 2020-02-18T03:46:13Z
0 votes
我真的很喜欢列表理解和所有其他半功能构造。 我希望我在第一个Python项目时就知道这些。
lhahne answered 2020-02-18T03:46:34Z
0 votes
我真正喜欢的是:列出理解,闭包(和高阶函数),元组,lambda函数,无痛苦的大数字。
我希望早点知道:在代码中使用Python习惯用法(例如列表推导而不是列表循环)的事实更快。
MAK answered 2020-02-18T03:46:59Z
0 votes
那个多核就是未来。 仍然爱Python。 它为我编写了相当一部分代码。
wheaties answered 2020-02-18T03:47:19Z
0 votes
功能编程工具,例如all和any
inspectorG4dget answered 2020-02-18T03:47:39Z