分类
成长之路

Python工程师面试必备25条Python知识点

到底什么是Python

你可以在回答中与其他技术进行对比,下面是一些关键点:

  • Python是种解释型语言。这就是说,与C语言和C衍生语言不同,Python代码在运行前不需要编译。其他的解释型语言还包括PHP和Ruby;
  • Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。可以直接编写类似x=111和x=”I’m a string”这样的代码,程序不会报错;
  • Python非常适合面向对象的编程,因为支持通过组合composition与继承inheritance的方式定义类class。

Python中没有访问说明符access specifier,类似C++中的public和private,这么设计的依据是“大家都是成年人了”

  • Python语言中,函数是第一类对象。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类也是第一类对象;
  • Python代码编写快,但运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。

Numpy就是一个很好地例子,它运行速度真的非常快,因为很多算术运算其实不是通过Python实现的。

  • Python的用途非常广泛:网络应用,科学建模,自动化和大数据应用等。它也常被用作“胶水语言”帮助其他语言和组件改善其运行状况;
  • Python让困难的事变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

如果你应聘的是一个Python开发岗位,你应该知道这是门什么样的语言,以及为什么这么酷。以及哪里不好。

什么是PEP8

PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议。

主要内容包括代码编排、文档编排、空格使用、注释、文档描述、命名规范、编码建议等等。

什么是pickling和unpickling

Pickle模块读入任何Python对象,并将它们转换成字符串,然后用dump函数将其转储到一个文件中:这个过程就叫做pickling。

反之从存储的字符串文件中提取原始Python对象的过程,叫unpickling。

Python是如何被解释的

Python是种解释性语言,它的源代码可直接运行。Python解释器会将源代码转换成中间语言,之后再翻译成机器码再执行。

Python怎样管理内存的

Python的内存管理是由私有heap空间管理的。所有Python对象和数据结构都在一个私有heap中。程序员没有访问该heap的权限,只有解释器才可以对它进行操作。

Python的heap空间分配内存是由Python的内存管理模块进行的,其核心API会提供一些访问该模块的方法供程序员来使用。

Python自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用。

有哪些工具可以帮助debug或做静态分析

PyChecker是一个静态分析工具,不仅能报告源代码中的错误,并会报告错误类型和复杂度。Pylint是检验模块是否达到代码标准的另一个工具。

何为Python装饰器

Python装饰器是Python中的特有变动,可以使修改函数变得更容易。

数组和元组之间区别是什么

数组和元组之间的区别:数组内容可以被修改的,元组内容是只读的。另外,元组可被哈希,比如作为字典的关键字。

参数按值传递和引用传递是怎样实现

Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定,因此无法改变。但如果一个对象是可以被修改的,可以改动对象。

字典推导式和列表推导式是什么

它们可以轻松创建字典和列表的语法结构。

Python都有哪些自带的数据结构

Python自带的数据结构分为可变的和不可变的。可变的有:数组、集合、字典;不可变的:元组、字符串以及数。

什么是Python命名空间

Python中,所有的名字都存在于一个空间中,它们在空间中存在和被操作:就是命名空间。

它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象。

Python的lambda是什么

这是一个常被用于代码中的单个表达式的匿名函数。

为什么lambda没有语句

匿名函数lambda没有语句的原因,是它被用于在代码被执行的时候构建新的函数对象并且返回。

Python的pass是什么

Pass是一个在Python不会被执行的语句。在复杂语句中,如一个地方需要暂时被留白,常常被用于占位符。

Python中什么是遍历器

遍历器是用于遍历一组元素,比如列表这样容器。

Python的unittest是什么

Python中,unittest是Python的单元测试框架。拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组,等等功能。

Python中什么是slicing

Slicing是种在有序的对象类型中(数组,元组以及字符串)节选某一段的语法。

Python中什么是构造器

生成器是实现迭代器的一种机制。功能的实现依赖于yield表达式,除此之外跟普通的函数没有两样。

Python的docstring是什么

Python文档字符串被称为docstring,在Python中的作用是为函数、模块和类注释生成文档。

如何在Python拷贝一个对象

如果要在Python中拷贝一个对象,大多时候你可以用copy.copy()或者copy.deepcopy()。但不是所有的对象都可以被拷贝。

Python的负索引是什么

Python中的序列索引可以是正也可以是负。如果是正索引,0是序列中第一个索引,而1是第二个索引。如果是负索引,-1是最后一个索引而-2是倒数第二个索引。

如何将一个数字转换成为一个字符串

可以使用自带函数str()将一个数字转换为字符串。如果想要八进制或者十六进制数,可以用oct()或hex()。

Xrange和range区别是什么

Xrange用于返回一个xrange对象,而range用于返回一个数组。不管那个范围多大,Xrange都用同样的内存。

Python中的模块和包是什么

Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象、属性。

一个包含许多Python代码文件夹是一个包。一个包可以包含模块和子文件夹。

分类
成长之路

Python到底是什么来头

Python将正式纳入高考内容!随着浙江省的重磅官宣,许多家长开始有些恐慌,我们一无所知的Python要加入高考了,到底Python是什么?什么时候要开始学?用什么样的方式学最好?今天就和大家好好聊聊Python这个磨人的神器。

Python英文是大蟒蛇的意思。Python的发明者是荷兰人Guido van Rossum。

Guido在1989年圣诞期间,为了打发圣诞节的无趣,于是想要开发一个新的脚本解释程序,所以就有了Python。

而之所以选中Python作为程序的名字,据说因为Guido是一个名为Monty Python的喜剧团体的爱好者。虽然Python的诞生似乎源于一种偶然,然而Python能够在诞生之后不久就风靡程序员的圈子似乎是一种必然。

权威专家预测Python将成为AI时代的第一语言。从AlphaGo打败人类天才棋手柯洁,到年度编程语言排位Python直逼首席王位,都可看出预言非虚。

与此同时,翻看招聘网站,与Python相关岗位薪资也是远远高于平均水平,近来更有水涨船高之势。

究竟Python为何如此受青睐呢?

程序圈中一直流穿着一句话:人生苦短,我用派神,这句略丧略戏谑的调侃难掩程序猿对Python的喜爱。到底为何会有这种说法,或许和Python以下特点不可分割。

  1. 易学:Python极容易上手,因为Python有极简单的语法;
  2. 丰富资源:Python标准库非常庞大,可以帮助处理各种工作。很多时候简洁的几行代码就可以解决一个问题,很大程度上提高了开发效率;
  3. 应用广泛:Python易学简洁和具有丰富的资源的特点使得它广泛应用在不同领域。较强数据处理能力能够将繁琐凌乱的数据轻松转换为结构化数据,以至于Python在大数据领域,成为最受欢迎语言;
  4. 跨平台性:Python是一门脚本语言,它不需要编译,它执行只跟解释器有关,与操作系统没关系。同样的代码不需要改动就可以在不同的操作系统上运行;
  5. 可扩展性:Python被称作胶水语言,可把Python嵌入C/C++程序,从而向程序用户提供脚本的功能。

对一个程序圈外的人大家或许不能理解Python的这些特点意味着什么,那就用木桶理论简单给大家解读一下Python的特点。

就木桶原理说,一只水桶能装多少水取决于它最短的那块木板,所以许多人都想去思考和补齐自己的短板。

Python恰恰是反木桶理论的极致。自诞生来,Python一直保持了简单、开放、语言工业化等特点,具备良好封装、组合、嵌入能力,开发效率惊人。这些都是它的长板,Python把这些方面都做到了极致。

而它的短板也丝毫没影响它的受喜爱程度,反而其促成了其他软件库对它的优化。

比如,有人觉得Python慢,提高Python的编译器工具出来了;为了配合科学计算、大数据的分析,SciPy/Pandas诞生了;要用机器学习,机器学习库开发出来了。

而这些库对于Python可随意调用,Python调用这些开发出来的库甚至比原生语言调用还要方便,所以大家简直没理由不用Python。

所以,围绕Python语言构建出来的生态库逐渐让其他语言望尘莫及。这也是Python被成为胶水语言并被预言将成为AI时代第一语言的原因。

了解Python的神奇,还有一个疑问,就是到底孩子多大学习Python最合适?

尤其最近山东省最新出版的小学信息技术六年级教材也加入了Python内容,更是又一次把这一问题抛在了大众的面前。

其实,在美国婴幼儿都有Python编程书。打开亚马逊网,就会看到很多婴幼儿Python编程书籍,美国确实是一个非常重视编程技能培养的国家,从比尔盖茨13岁时学习编程,Facebook创始人扎克伯格11岁开始学习编程这些事例中也可见一斑。

可能很多人都会有疑问,小学生学习编程能懂吗?

其实年龄在7岁左右的孩子,学过一点Scratch或者机器人编程的都可学习Python语言。这个年龄段的孩子思维模式和认知能力已经可以接受Python语言课程。

然而,在小学时开设Python编程课,更多是培养兴趣和编程思维,培养孩子发现问题、思考问题和解决问题的能力,学校少量初级的Python课程远远无法满足升学需要。

未来是人工智能的时代到来,Python语言将引领绝大多数工作岗位的情况下,学习Python应该用一种更加专业的学习的心态,同时及早让孩子掌握Python技能已是大势所趋。

分类
运维教程

解决centos中python升级后输入法不可用问题

很多朋友反映,升级完python之后,自带的iBus输入法图标不见了,打字时没有候选框,原来iBus也不支持python2.7。 分别用vi打开下面两个文件,找到exec python那一行,把exec python改为exec python.bak后保存退出。iBus在重启后就会恢复正常了!

  1. vi /usr/bin/ibus-setup
  2. vi /usr/libexec/ibus-ui-gtk
分类
运维教程

解决centos中python升级后yum不可用问题

系统Python软链接指向Python2.7版本后,因yum是不兼容Python 2.7的,故yum不能正常工作,我们需要指定yum的Python版本为升级前的版本

  1. vi /usr/bin/yum

将文件头部的

  1. #!/usr/bin/python

改成

  1. #!/usr/bin/python.bak
分类
运维教程

升级centos中的python版本

查看python的版本

  1. python  -V

下载python2.7.13版

  1. wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz

解压

  1. tar -zxvf Python-2.7.13.tgz

更改工作目录

  1. cd Python-2.7.13

安装

  1. ./configure && make && make install

建立软链,使系统默认的python指向python2.7.13

  1. mv /usr/bin/python /usr/bin/python.bak
  2. ln -s /usr/local/bin/python2.7 /usr/bin/python

重新检验Python的版本

  1. python  -V
分类
成长之路

生命苦短,我需要python

语言,是人们互相沟通交流的工具,大家通过各种各样的语言互相的了解彼此。表情语言、自然语言、身体语言等等。

语言,也是人类和电脑交流的工具,不过因为电脑没有学习能力,所以我们不得不按照其标准与其交流,这时我们就需要掌握一些计算机语言。

计算机语言分为很多种,个人简单分成两类,一类就是编程语言,另一类是执行语言。

何为执行语言,我定义的执行语言就是系统中自带的,类似于linux系统中的命令,将这些命令组合在一起的shell脚本文件,就属于执行语言了。这种语言使用简单,不过因为受系统命令的限制,可以实现功能有限。

何为编程语言,简单来说就是之前不存在的一些功能可以通过这种语言创造出来,例如c等。

今天就想跟大家聊下python,这货跟我的年龄差不多,不过是近几年才流行的(当然之前也有人用,不过还没达到耳熟蓝翔的程度吧)我是因为需要学习自动化运维吧,才接触到python的。

我个人没有任何的语言基础,对任何事物都是三分钟热度,不过python这一门语言确实讨人喜欢。此文列出python的几大特点,以此结束此文,以后可能会更新些关于python的教程,敬请期待!

优势:

  1. 跟C/C++/Java相比,Python能让你用少的多的多的代码写出相同的程序。有人曾计算过,Python写出的程序的代码行数只相当于相对应的Java代码的行数的五分之一。如果没有绝对必要,为什么要花这么多时间写出这么多的代码?而且,有人还说,一个优秀的程序员能维护的代码最多是2万行。这不区分使用的语言究竟是汇编,C还是Python/Ruby/PHP/Lisp。所以,如果你用Python写,你一个人干的,不管是干什么,如果换Java/C/C++,那都需要一个5人的小团队来干。
  2. 跟PHP/VB相比,Python是一种从设计上讲比它们好的不知多少倍的语言。PHP和VB分别是在开发网站和桌面应用程序上非常流行的语言。它们流行的原因是非常易学。不懂计算机的人也很容易的上手。如果你用这些语言开发过大型的项目,你就会发现这些语言的设计是如此的糟糕。是好朋友,他就不会劝你使用PHP/VB。
  3. 跟Lisp/Scala/Haskell/Closure/Erlang相比,Python跟它们比起来显得相当的主流。确实,这些语言每种都有其很酷的特征,对于高级编程人员,了解这些语言能给他们对编程的思考带来实际提升。但这些应该在你以后的职业生涯中才去决定学哪一两种。对于现在,Python是在语言功能和实际运用之间平衡后更好的选择。
  4. 跟Perl相比,Python都受恩于Perl,在两种语言异军突起前,Perl是最好、最大的一种动态型语言。但是现在,Perl已成为明日黄花,越来越多的人都转向Python。我感觉Perl的面向对象机制有点做,很不好用。通常认为,Perl一种比较难学的语言,因为它提供你了太多不同的方法去完成同一个任务,它的语法有一点像密码,非常的不直观,除非对它掌握的非常好。总之,感觉Perl是一种对于学生来说不是很合适的语言,除非你有特殊的理由去学它。
  5. 跟sh/sed/awk/bash相比,如果你使用Linux/Unix,可能需要做一些shell编程,甚至会编写一些不小的程序。但是,对于这些语言,一旦程序达到一定行数,事情就会开始变得让你痛苦不堪,你最好是用Python去做这些事情。当然,要做这种事情,Perl才是最好的选择,Python排第二。