热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python有哪些新手不会了解的深入细节?-Python教程

新手觉得简单,但其实这玩意不比C简单。有哪些区分新手和老手的知识,习惯和细节呢?谢谢!
新手觉得简单,但其实这玩意不比C简单。有哪些区分新手和老手的知识,习惯和细节呢?谢谢!

回复内容:

前人问过了:
Hidden features of Python
摘抄目录:
  • Argument Unpacking
  • Braces
  • Chaining Comparison Operators
  • Decorators
  • Default Argument Gotchas / Dangers of Mutable Default arguments
  • Descriptors
  • Dictionary default .get value
  • Docstring Tests
  • Ellipsis Slicing Syntax
  • Enumeration
  • For/else
  • Function as iter() argument
  • Generator expressions
  • import this
  • In Place Value Swapping
  • List stepping
  • __missing__ items
  • Multi-line Regex
  • Named string formatting
  • Nested list/generator comprehensions
  • New types at runtime
  • .pth files
  • ROT13 Encoding
  • Regex Debugging
  • Sending to Generators
  • Tab Completion in Interactive Interpreter
  • Ternary Expression
  • try/except/else
  • Unpacking+print() function
  • with statement

另外还有一个是黑魔法元类:
译文:blog.jobbole.com/21351/
原文:stackoverflow.com/quest 了解内建的几大容器list/dict/set用什么数据结构实现,以及一些基本操作的时间复杂度。这个不难,python的list实际上就是个vector,不是linked list,dict/set就是hash table。。然后避免犯频繁在list中间插入/删除之类的错误

这也使得python不适合函数式编程,像什么lambda不能跨行都是小事,但是标准库里连持久化的列表/搜索树都没有。。自己实现也不是不行,CPython函数调用开销又大。

所以还是老老实实写循环、抛异常吧,When in Rome, do as the Romans do。 列几个关键字吧:


decorator
yield(generator)
descriptor
method & function
slot
MRO
自省(id、type、dir、vars等等)

然后就是各种常用的模块吧,itertools、functools、collections、copy等吧

最后有兴趣的话可以读一下陈儒写的《Python源码剖析》,可以了解到小整数缓存,int、list、dict缓存池,字符串intern机制,内存管理等内部实现。 某个主要分支的某个小版本被墙了 迭代器,生成器,可迭代对象。搞清楚这几个概念,面试官就会觉得你很牛逼了。 正负数除法求商和余数的值 我觉得最有趣的莫过于Method Resolution Order(MRO)。

MRO是指class inheritance中method或者attribute的search order。最简单的情况是classic class的 inheritance tree。这时候,search order是depth first, from left to right。
举个例子:

class A():
pass

class B(A):
pass

class C(A):
pass

class D(B, C):
pass

在上面的inheritance tree中,class D的MRO应该是 D,B,A,C。值得注意的是,A的位置在C的前面。

对于new style class, python 2.2和2.3(或以上)也有区别,2.3以后的MRO algorithm叫C3 algorithm。具体的细节大家可以google一下,个人觉得非常有趣。 你可以学完基础Python的语法之后学一下其他语言,看看他们的一些特征能不能在Python中实现。

我举个小例子。

在Racket里面,有一个stream的构造。

(define ones (lambda () (cons 1 ones)))
一个非常重要的内置函数: type 。 Talks | Armin Ronacher's Thoughts and Writings 这里的pdf中有, 我截一段你看下

或者这个网页A Curious Course on Coroutines and Concurrency应该是将Python的yield用得超好了
举例:

推荐阅读
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了Python版Protobuf的安装和使用方法,包括版本选择、编译配置、示例代码等内容。通过学习本教程,您将了解如何在Python中使用Protobuf进行数据序列化和反序列化操作,以及相关的注意事项和技巧。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 胡蜂能进行逻辑推理的研究成果
    最新研究表明,胡蜂具备一定的逻辑推理能力,能够进行传递性推理。研究人员通过实验发现,胡蜂在避免电击的测试中,能够正确选择符合逻辑的选项。这项研究成果对于了解无脊椎动物的认知能力具有重要意义,也为解析胡蜂社会结构的进化提供了线索。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • docker增加restart=always, docker重启后自动启动容器的方法
    本文介绍了在运行docker容器时如何添加参数来保证每次docker服务重启后容器也自动重启的方法,以及如何使用命令来更新已启动的容器。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
你的眼神16_884
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有