iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python入门需要了解的实用技巧有哪些
  • 753
分享到

Python入门需要了解的实用技巧有哪些

2023-06-17 13:06:13 753人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这期内容当中小编将会给大家带来有关Python入门需要了解的实用技巧有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。主要记录 python 中一些常用技巧Python 禅道这是Python的指导原则,

这期内容当中小编将会给大家带来有关Python入门需要了解的实用技巧有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

主要记录 python 中一些常用技巧

Python 禅道

这是Python的指导原则,但有不同诠释。

如果您使用的一种编程语言是以小品喜剧艺术团命名的,你***有幽默感。

美丽优于丑陋。

明确优于含蓄。

简单比复杂好。

平倘优于嵌套。

稀疏比密集更好。

特殊情况不能特殊到打破规则。

错误不应该默默传递。

......

代码风格: 提高可读性

Programs must be written for people to read, and only incidentally for Machines to execute.

—Abelson & SuSSMan, Structure and Interpretation of Computer Programs

PEP 8: Python 代码风格指南

值得阅读:

Http://www.python.org/dev/peps/pep-0008/

空格(行)使用 (1)

◆ 使用 4 个空格缩进。

◆ 不要使用制表符。

◆ 不要将制表符和空格混合使用。

◆ IDEL和Emacs的Python的都支持 spaces模式。

◆ 每个函数之间应该有一个空行。

◆ 每一个 Class 之间应该有两个空行。

空格(行)使用 (2)

◆ 在使用 字典(dict), 列表(list), 元组(tuple), 参数(argument)列表时, 应在 "," 前添加一个空格, 并且使用字典(dict)时,在 ":" 号后添加空格,而不是在前面添加。

◆ 在括号之前或参数之前不添加空格。

◆ 在文档注释中前后应该没有空格。

Python代码

def make_squares(key, value=0):      """Return a dictionary and a list..."""     d = {key: value}      l = [key, value]      return d, l

命名

◆ joined_lower 可以是 函数名, 方法名, 属性名

◆ joined_lower or ALL_CAPS 是常量

◆ StudlyCaps 类名

◆ camelCase 只有在预先制定好的命名规范使用

◆ 属性: interface, _internal, __private

◆ 但尽量避免__private形式。下面两个链接解释了 为什么python中没有 private声明?

http://stackoverflow.com/questions/70528/why-are-pythons-private-methods-not-actually-private

http://stackoverflow.com/questions/1641219/does-python-have-private-variables-in-classes

较长代码行

保持一行代码在 80 个字符长度。

在括号内使用隐含的行延续:

Python代码

def __init__(self, first, second, third,              fourth, fifth, sixth):     output = (first + second + third               + fourth + fifth + sixth)

或者在需要换行的位置使用 \ 来延续行:

Python代码

VeryLong.left_hand_side \      = even_longer.right_hand_side()

另外,使用反斜杠是有风险的,如果你添加一个空格在反斜杠后面,它就出错了。此外,它使代码难看。

较长字符串

将相邻的字符串进行连接的做法:

Python代码

>>> print 'o' 'n' "e" one

虽然字符之间的空格不是必需的,但是这样有助于可读性。

Python代码

>>> print 't' r'\/\/' """o""" t\/\/o

用一个 “r“ 开头的字符串是一个“raw“的字符串(类似java中的转义符)。上面的反斜杠就会当成普通字符串处理。他们对正则表达式windows文件系统路径非常有用。

注意:使用字符串变量名无法通过以上方式进行连接。

Python代码

>>> a = 'three' >>> b = 'four' >>> a b    File "<stdin>", line 1     a b        ^  SyntaxError: invalid syntax

这是因为自动连接是由Python解析器/编译器来处理的,因为其无法在编译时对变量值进行"翻译",所以就这种必须在运行时使用“+“运算符来连接变量。

复合语句

Good:

Python代码

if foo == 'blah':      do_something()  do_one()  do_two()  do_three()

Bad:

Python代码

if foo == 'blah': do_something()  do_one(); do_two(); do_three()

文档注释(Docstrings) & 注释

文档注释 = 用于解释如何使用代码

文档注释公约:http://www.python.org/dev/peps/pep-0257/

注释 = 为什么 (理由) & 代码如何工作的如:

Python代码

# !!! BUG: ...  # !!! FIX: This is a hack  # ??? Why is this here?

注释对于任何语言开发者来说已经最基本的东西了,这里就不详细说了.

交换变量

在其它语言的交换变量的做法一般是:

Java代码

temp = a  a = b  b = temp

Python的做法:

Python代码

b, a = a, b

也许你见到过这样的情况,但是你知道它是如何工作的吗?

◆ 首先,逗号是元组构造语法。

◆ 等号的右边是定义一个元组 (tuple packing).

◆ 其左边为一个目标元组 (tuple unpacking)).

右边的元组根据名称被 unpacked 到左边的无组。

更多关于 unpacked例子:

Python代码

>>> info =['David', 'Pythonista', '+1250']  >>> name, title, phone = info  >>> name  'Davids' >>> title  'Pythonista' >>> phone  '+1250'

在结构化的数据上使用循环:

info 是在上面定义的一个 list . 所以下面的 people 有两个项, 两个项都是分别都拥有三个项的 list.

Python代码

>>> people = [info, ['Guido', 'BDFL', 'unlisted']]  >>> for (name, title, phone) in people:  ...     print name, phone  ...  David +1250 Guido unlisted

以上循环中,people中的两个项(list item),都已经被 unpacked 到 (name, title, phone) 无组中。

可以任意嵌套(只要左右两边的结构一定要能够匹配得上):

Python代码

>>> david, (gname, gtitle, gphone) = people  >>> gname  'Guido' >>> gtitle  'BDFL' >>> gphone  'unlisted' >>> david  ['David', 'Pythonista', '+1250']

更多关于 Tuples

我们看到的是元组通过逗号构造,而不是括号。例如:

Python代码

>>> 1,  (1,)

Python的解释器会为你显示括号,所以建议你使用括号:

Python代码

>>> (1,)  (1,)

千万不要忘记逗号!

Python代码

>>> (1)  1

在只有一个元素的元组,尾随逗号是必须的,在2 + 元素的元组,尾随逗号是可选的。 如果创建一个 0或空元组,一对括号是快捷的语法:

Python代码

>>> ()  ()  >>> tuple()  ()

一个常见的错误当你并不想要一个无组,却无意的添加了一个逗号,很容易造成你在代码中的错误,如:

Python代码

>>> value = 1,  >>> value # is a tuple, not a int  (1,)

所以,当你发现一个元组时,赶紧去找一下那个,号吧。

关于 "_"

是一个非常有用的功能,但是却很少有人知道。

当你在交互式模式下(如 IDEL)计算一个表达式或调用一个函数后,其结果必然是一个临时名称,_(下划线):

Python代码

>>> 1 + 1 2 >>> _  2

在 _ 中存储***输出的值。

当输出的结果是 None 或没有任何输出时,而 _ 的值并不会改变,仍然保存上一次的值。这就是方便所在。

当然,这只能交互式的模式中使用,在模块中不能支持。

这在交互式模式中是非常有用的,当你在过程中没有保存计算结果 或 你想看***一步的执行的输出结果:

Python代码

>>> import math  >>> math.pi / 3 1.0471975511965976 >>> angle = _  >>> math.cos(angle)  0.50000000000000011 >>> _  0.50000000000000011

创建String: 从列表中创建

开始定义一个 string 列表:

Python代码

colors = ['red', 'blue', 'green', 'yellow']

当我们需要将上面的列表连接成一个字符串。尤其当 list 是一个很大的列表时....

不要这样做:

Python代码

result = '' for s in colors:      result += s

这种方式效率非常低下的,它有可怕的内存使用问题,至于为什么,如果你是 javaer 的话,其中的 string 连接,我想你并不陌生。

相反,你应该这样做:

Python代码

result = ''.join(colors)

当你只有几十或几百个string项连接时,它们效率上并不会太大的差别。但你要在养成写高效代码的习惯,因为当字符串数千时,join 比起 for 连接性能会能有所提升。

如果你需要使用一个函数来生成一个字符串列表,同样可以使用:

Python代码

result = ''.join(fn(i) for i in items)

尽可能的使用

Good:

Python代码

for key in d:      print key

◆ 使用 in 一般情况下是非常快的。

◆ 这种方式也适用于其它的容器对象(如 list,tuple 和 set)。

◆ in 是操作符(正如上面所看到的)。

Bad:

Python代码

for key in d.keys():      print key

保持与上面的一致性,使用 use key in dict 方式,而不是 dict.has_key():

Python代码

 # do this:  if key in d:      ...do something with d[key]   # not this:  if d.has_key(key):      ...do something with d[key]

字典中的 get 函数

我们经常需要在字典中初始化数据:

以下是不好的实现方法:

Python代码

navs = {}  for (portfolio, equity, position) in data:      if portfolio not in navs:          navs[portfolio] = 0     navs[portfolio] += position * prices[equity]

使用dict.get(key, default) 删除 if 判断代码:

Python代码

navs = {}  for (portfolio, equity, position) in data:      navs[portfolio] = (navs.get(portfolio, 0)                         + position * prices[equity])

这种方式更为直接。

字典中的 setdefault 函数 (1)

当我们要初始化一个可变字典的值。每个字典的值将是一个列表。下面是不好的做法:

初始化可变字典的值:

Python代码

equities = {}  for (portfolio, equity) in data:      if portfolio in equities:          equities[portfolio].append(equity)      else:          equities[portfolio] = [equity]

通过 dict.setdefault(key, default) 使这段代码工作的更好:

Python代码

equities = {}  for (portfolio, equity) in data:      equities.setdefault(portfolio, []).append(                                           equity)

dict.setdefault()等同于“ get, or set & get“ 或"如果没有,就设置"; 如果你的字典Key是复杂的计算或long类型,使用 setdefault 是特别有效的。

字典中的 setdefault 函数 (2)

在我们看到的setdefault字典方法也可以作为一个独立的语句使用:

Python代码

avs = {}  for (portfolio, equity, position) in data:      navs.setdefault(portfolio, 0)      navs[portfolio] += position * prices[equity]

我们在这里忽略了字典的setdefault方法返回的默认值。我们正利用的setdefault中的作用,仅仅只是在dict中没有 key 的值的时候才会设置。

创建 & 分割字典

如果你有两份 list 对象,希望通过这两个对象构建一个 dict 对象。

Python代码

given = ['John', 'Eric', 'Terry', 'Michael']  family = ['Cleese', 'Idle', 'Gilliam', 'Palin']  pythons = dict(zip(given, family))  >>> pprint.pprint(pythons)  {'John': 'Cleese',   'Michael': 'Palin',   'Eric': 'Idle',   'Terry': 'Gilliam'}

同样,如果希望获取两份列表,也是非常简单:

Python代码

>>> pythons.keys()  ['John', 'Michael', 'Eric', 'Terry']  >>> pythons.values()  ['Cleese', 'Palin', 'Idle', 'Gilliam']

需要注意的是,上面 list 虽然是有序的,但是 dict 中的 keys 和 values 是无序的,这正是因为 dict 本质就是无序存储的。

索引 & 项 (1)

如果你需要一个列表,这里有一个可爱的方式来节省你的输入:

Python代码

>>> items = 'zero one two three'.split()  >>> print items  ['zero', 'one', 'two', 'three']

如果我们需要遍历这个 list ,而且需要 index 和 item:

Python代码

                  - or -  i = 0 for item in items:      for i in range(len(items)):      print i, item               print i, items[i]      i += 1

索引 & 项 (2): enumerate

通过 enumerate 可以返回 list 中的 (index, item)元组:

Python代码

>>> print list(enumerate(items))  [(0, 'zero'), (1, 'one'), (2, 'two'), (3, 'three')]

于是,遍历list获取index 及 item 就更加简单了:

Python代码

for (index, item) in enumerate(items):      print index, item

Python代码

# compare:              # compare:  index = 0               for i in range(len(items)):  for item in items:              print i, items[i]      print index, item      index += 1

不难看出,使用 enumerate 比起下面两种方式,更加简单,更加容易阅读,这正是我们想要的。

下面是例子是如何通过 enumerate 返回迭代器:

Python代码

>>> enumerate(items)  <enumerate object at 0x011EA1C0>  >>> e = enumerate(items)  >>> e.next()  (0, 'zero')  >>> e.next()  (1, 'one')  >>> e.next()  (2, 'two')  >>> e.next()  (3, 'three')  >>> e.next()  Traceback (most recent call last):    File "<stdin>", line 1, in ?  StopIteration

默认参数值

这是对于一个初学者常犯的错误,甚至于一些高级开发人员也会遇到,因为他们并不了解 Python 中的 names.

Python代码

def bad_append(new_item, a_list=[]):      a_list.append(new_item)      return a_list

这里的问题是,a_list是一个空列表,默认值是在函数定义时进行初始化。因此,每次调用该函数,你会得到不相同的默认值。尝试了好几次:

Python代码

>>> print bad_append('one')  ['one']  >>> print bad_append('two')  ['one', 'two']

列表是可变对象,你可以改变它们的内容。正确的方式是先获得一个默认的列表(或dict,或sets)并在运行时创建它。

Python代码

def good_append(new_item, a_list=None):      if a_list is None:          a_list = []      a_list.append(new_item)      return a_list

判断 True 值

Python代码

# do this:        # not this:  if x:             if x == True:      pass              pass

它的优势在于效率和优雅。

判断一个list:

Python代码

# do this:        # not this:  if items:         if len(items) != 0:      pass              pass                    # and definitely not this:                    if items != []:                        pass

True 值

True和False是内置的bool类型的布尔值的实例。谁都只有其中的一个实例。

FalseTrue
False (== 0)True (== 1)
"" (empty string)any string but "" (" ", "anything")
0, 0.0any number but 0 (1, 0.1, -1, 3.14)
[], (), {}, set()any non-empty container ([0], (None,), [''])
Nonealmost any object that's not explicitly False

简单比复杂好

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

&mdash;Brian W. Kernighan

上述就是小编为大家分享的Python入门需要了解的实用技巧有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python入门需要了解的实用技巧有哪些

本文链接: https://www.lsjlt.com/news/289137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python入门需要了解的实用技巧有哪些
    这期内容当中小编将会给大家带来有关Python入门需要了解的实用技巧有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。主要记录 Python 中一些常用技巧Python 禅道这是Python的指导原则,...
    99+
    2023-06-17
  • Python入门需要了解的语法与类型有哪些
    这期内容当中小编将会给大家带来有关Python入门需要了解的语法与类型有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常...
    99+
    2023-06-17
  • JavaScript开发者需要了解的DevTools技巧有哪些
    JavaScript开发者需要了解的DevTools技巧有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 使用隐身模式...
    99+
    2024-04-02
  • Linux运维需要掌握的实用技巧有哪些
    这篇文章主要介绍“Linux运维需要掌握的实用技巧有哪些”,在日常操作中,相信很多人在Linux运维需要掌握的实用技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux运维需要掌握的实用技巧有哪些...
    99+
    2023-06-15
  • 需要掌握的JavaScript技巧有哪些
    这篇文章主要讲解了“需要掌握的JavaScript技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“需要掌握的JavaScript技巧有哪些”吧!1....
    99+
    2024-04-02
  • HTML 5的入门级技巧有哪些
    今天就跟大家聊聊有关HTML 5的入门级技巧有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Web技术的发展速度太快了,如果你不与时俱进,就会被...
    99+
    2024-04-02
  • 有哪些重要的Python技巧
    本篇内容介绍了“有哪些重要的Python技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、变量的交换a = 1&nb...
    99+
    2023-06-16
  • 新手入门Linux使用技巧有哪些
    这篇文章给大家分享的是有关新手入门Linux使用技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.使用虚拟控制台登录后按Alt F2键这时又能够看到"login:"提示符,这个就是第...
    99+
    2023-06-17
  • JavaScript需要知道的小技巧有哪些
    这篇文章主要介绍JavaScript需要知道的小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、神奇的扩展运算符扩展运算符(spread)是三个点( ... ), 可以说我在 JavaScript 中最喜...
    99+
    2023-06-22
  • Python实用的技巧有哪些
    这篇文章主要讲解了“Python实用的技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python实用的技巧有哪些”吧!1. 列表推导式有人或许以前听说过这些。Python中的一种编...
    99+
    2023-06-16
  • Python入门知识需要注意的陷阱有哪些
    这篇文章主要讲解了“Python入门知识需要注意的陷阱有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python入门知识需要注意的陷阱有哪些”吧!Python以语法简单、关键字少著称,...
    99+
    2023-06-15
  • 有哪些实用的Python技巧
    这篇文章主要讲解了“有哪些实用的Python技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些实用的Python技巧”吧!1. 重复元素判定以下方法可以检查给定列表是不是存在重复元素,...
    99+
    2023-06-16
  • 实用的Python技巧有哪些
    这篇文章主要介绍“实用的Python技巧有哪些”,在日常操作中,相信很多人在实用的Python技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”实用的Python技巧有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-02
  • Python的实用技巧有哪些
    本篇内容介绍了“Python的实用技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ALL OR ANYPython之所以成为这么一门...
    99+
    2023-06-02
  • Python实用技巧有哪些
    这篇文章主要讲解了“Python实用技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python实用技巧有哪些”吧!整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,...
    99+
    2023-06-16
  • 有哪些Python实用技巧
    本篇内容主要讲解“有哪些Python实用技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Python实用技巧”吧!1. 使用youtube-dl下载YouTube视频你可以使用Pytho...
    99+
    2023-06-16
  • Java项目索引管理,你需要了解哪些技巧?
    随着Java语言的不断发展,越来越多的项目使用Java进行开发。在开发过程中,项目的索引管理是非常重要的一环。本文将介绍Java项目索引管理的技巧,帮助开发者更好地管理项目。 一、什么是项目索引? 项目索引是指项目中所有类的集合,包括Ja...
    99+
    2023-06-18
    索引 打包 缓存
  • CentOS需要掌握的入门知识有哪些
    今天就跟大家聊聊有关CentOS需要掌握的入门知识有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在系统的学习CentOS入门的知识中,我们掌握了一些基本的设置。今天我们来讲一下...
    99+
    2023-06-16
  •  Python的实用技巧有哪些呢
     Python的实用技巧有哪些呢,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。01 all or anyPython 语言如此流行的众多原因之一,是因...
    99+
    2023-06-22
  • Python中有哪些实用技巧
    小编给大家分享一下Python中有哪些实用技巧,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!整理字符串输入整理用户输入的问题在编程过程中很常见。有更好的方法来解决:user_input = "...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作