对于初学者,我们都遇到过难以理解一些概念。哪门都有哪些呢?

总结来说有:编码问题、装饰器、闭包、对象引用、可变性,抽象基类、魔术方法、多重继承、mixin、重载、可迭代对象、迭代器和生成器、上下文管理、基于生成器的协程、原生协程、asyncio 异步编程、描述符协议、元编程等

Python 装饰器

Python 装饰器是在面试过程高频被问到的问题,装饰器也是一个非常好用的特性,熟练掌握装饰器会让你的编程思路更加宽广,程序也更加 pythonic。

编码问题

我们都知道,计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字(010101).如果我们想保存数据,首先得将我们的数据进行一些处理,最终得转换成010101才能让计算机识别。

所以必须经过一个过程:

字符--------(翻译过程)------->数字

这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。

函数闭包

函数闭包的概念在初学时容易迷糊,尤其涉及到闭包的作用域和参数问题

python有一个很有意思的地方,就是def函数可以嵌套在另一个def函数之中。调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,而不会去调用内层函数,除非在嵌套函数之后又显式的对其进行调用。

x = 99
def f1():x = 88def f2():print(x)f2()
f1()
88

可以看出,f1中的嵌套变量x覆盖了全局变量x=99,然后f2中的本地变量按照引用规则,就引用了x=88。

下面我们来说说嵌套作用域的一个特殊之处:

本地作用域在函数结束后就立即失效,而嵌套作用域在嵌套的函数返回后却仍然有效。

def f1():x = 88def f2():print(x)return f2
action = f1()
action()
88

这个例子非常重要,也很有意思,函数f1中定义了函数f2,f2引用了f1嵌套作用域内的变量x,并且f1将函数f2作为返回对象进行返回。最值得注意的是我们通过变量action获取了返回的f2,虽然此时f1函数已经退出结束了,但是f2仍然记住了f1嵌套作用域内的变量名x。

上面这种语言现象称之为闭包:一个能记住嵌套作用域变量值的函数,尽管作用域已经不存在。

对于新手来说,Python 中有哪些难以理解的概念?我似乎明白了相关推荐

  1. 对于0基础来说,Python 中有哪些难以理解的概念?我似乎明白了

    对于初学者,我们都遇到过难以理解一些概念.哪门都有哪些呢? 总结来说有:编码问题.装饰器.闭包.对象引用.可变性,抽象基类.魔术方法.多重继承.mixin.重载.可迭代对象.迭代器和生成器.上下文管理 ...

  2. 新手用Python做量化投资需要注意哪些?

    新手自学python做量化投资需要注意些什么?量化金融其实是一个交叉复合学科,需要掌握数学.计算机.金融等方面的知识.显而易见,对于金融学背景的同学来说,就需要另外学习计算机编程的知识,而计算机背景的 ...

  3. 新手学python还是c语言_py和c语言究竟新手该学哪个?

    看到另外两个答主都建议先学C,那么我出个不一样的意见:先学Python. 对于新手来说,Python语法比较简单,学起来容易. 另外,Python很实用.这不仅是因为Python有很多现成的库,你可以 ...

  4. python新手自学-新手自学python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python介绍与特点(自学python知识整理)python 简介python ...

  5. python 结尾回车_理解不了Python正则表达式?我帮你搞定

    点击蓝字"python教程"关注我们哟! 在学习Python的过程中,我们难免会遇到比较晦涩.难以理解的内容,比如Python中的正则表达式.面向对象等内容,为了更好地帮助大家理解 ...

  6. 新手学Python, 如何从入门到入土变为从入门到快速上车?

    导读:今天这篇文章是「大数据DT」内容合伙人王皓关于<Python数据分析与数据化运营>的一篇读书笔记.在大数据公众号后台对话框回复合伙人,免费读书.与50万同行分享你的洞见. 本文旨在提 ...

  7. python 语法错误 和异常_Python基础知识:新手学Python时常见的语法错误和异常

    大家好,今天我们简单介绍下在学习Python时常见的一些错误和异常. 记得刚接触Python的时候,一条简单的语句在执行的时候却总能遇到报错.然后各种艰难的复查发现可能是循环语句缺少冒号啊.用了中文的 ...

  8. 【第7节】零基础新手的Python入门实战宝典(五) —— 最基础的表达(数据类型 · 下)

    如果你之前看过其他教程,但是发现云里雾里复杂的让你头晕眼花的话,没错,看这里,本系列Python教程专为啥都不会的新手用户打造,放宽心,大胆看,我就是说说书,你就当听听故事,轻松愉快走进编程的大门,& ...

  9. 新手学Python有什么好方法?如何学好Python?

    对于新手来说,如何快速入门掌握Python编程呢?这个问题问的非常不错.学习编程来说,虽然语言具有简单化的优势,但是同样学习起来非常的麻烦,想要快速学习好一门语言,唯有站在别人的肩膀上才可以更快一些, ...

最新文章

  1. protobufjs 命令执行_【原码笔记】-- protobuf.js 与 Long.js
  2. 算法基础知识科普:8大搜索算法之二叉搜索树(上)
  3. MYSQL数值运算符和函数用法
  4. C#多线程编程系列(五)- 使用任务并行库
  5. 看周志华教授的一番话有感
  6. mysql必知必会_5天学完《MySQL必知必会》学习笔记之第四天
  7. JavaScript-参数
  8. MyEclipse查看.class文件
  9. html5 textarea 限制字数,如何限制textarea的字符数为225?
  10. Redis学习记录(菜鸟教程学习)
  11. win10访问不了服务器的共享文件,win10访问不了samba共享文件夹怎么办
  12. Insyde uefi 隐藏设置_uefi版和装机版有什么区别详细分析
  13. 3DMax与Unity统一长度单位和轴
  14. 2019年天梯赛第一阶段(1-8)全解
  15. java-工作时突发的一个天马行空的想法
  16. STM32F429的内部FLASH介绍
  17. JavaScript基础知识和jQuery基础知识简介
  18. matlab中的strfind和findstr函数
  19. mysql in 命中索引_MySql优化-你的SQL命中索引了吗
  20. 你可能用错了 kafka 的重试机制

热门文章

  1. hadoop 启动提示输入password的问题
  2. 用姓名字段统计人数_2019年度全国各地姓名报告分析汇总(全国、深圳、佛山、杭州)...
  3. python bosonnlp_BosonNLP分词技术解密
  4. SpringMVC-快速入门
  5. 云原生系列「五」我为啥又看上了serviceMesh?
  6. FineReport——设计时无相关数据库查看权限,使用对应数据库解决方案
  7. Visual C++——设置光标Cursor
  8. 归并排序(Merge_Sort)
  9. 【数据结构】用java实现不同的七种排序算法和性能比较
  10. Centos DHCP服务搭建及测试