Python和Pythonic

Python是一门计算机语言(这不是废话么),简单易学,上手容易,深入有一定困难。为了逼格,还是给你们堆一些名词吧:动态语言、解释型、网络爬虫、数据处理、机器学习、Web开发、等等等等。Python目前分为2.x和3.x两个版本,与其它语言不一样的是,它的这两个版本是不兼容的,虽然会其中一个就容易上手另一个,但是鉴于公司目前几乎全是用Python2.7,建议同事们也可以从2.x版本开始,如果没有历史遗留问题,建议初学者直接上手Python3。

Pythonic指的是按照Python推荐的规范,干净美观、可读性强的逼格满满到代码风格,比如多使用Python内置的数据结构,不要重复造轮子。简单来讲,你可以在Python解释环境里输入import this了解一下Python之禅。Python的代码风格上,如果团队有自己的风格则按照自己的风格,否则,比较推荐的是PEP8或Google Code Style。关于PEP8规范,链接在这里(https://www.python.org/dev/peps/pep-0008/)。


开发环境搭建

在常见的*inx系统上,默认都安装了Python解释器,你可以直接在终端输入python进入默认的环境。在Windows系统上,你需要去Python官网下载Python的安装包,安装之后可以在“所有程序”中找到“IDLE”,也可以在cmd中通过输入python进入解释器环境。

对于Python常用的IDE(集成开发环境),推荐使用PyCharm,如果土豪请购买正版,如果不是土豪又有情怀,请使用社区版(免费),如果既不土豪又没有情怀,就用盗版吧(不推荐)。

Python之所以非常流行,离不开它千千万万的第三方库,你可以将第三方库理解为我写了一个牛X的功能,发布出来之后你可以直接使用。安装第三方库的话,推荐使用pip,在Ubuntu上,你可以通过apt-get install python-pip安装。


hello, world.

常见情况下,Python代码可以通过两种形式运行:一是直接在刚才所讲的解释环境下(输入python命令后进入的地方)一行一行的执行,或者也可以保存到一个.py的文件中,在终端输入python 文件名来执行。比如新建一个test.py,文件内容为print 'hello, world.',在终端输入python test.py,即可输出hello, world.。

注意⚠️:Python中没有使用花括号{}来表示代码间的层级关系而是使用缩进,这样的好处是在语法层面上限制了不好的代码风格,但是初学者容易混淆。


变量、基础数据类型

变量

Python中变量不需要声明,你可以通过直接赋值的方式使用变量:

a = 1

b = True

c = 1.0

a = 3+2j

在Python中,你可以在给一个变量赋值为一种类型之后重新为其赋值为新的类型(如上面代码第1、4行)。

基础数据类型

Python中的数字有:整型、长整型、浮点型、布尔型、复数。

  • 整形:int,常见的整数(正数/负数/0),通过sys.maxint即可查看当前平台上最大的整型的值。

  • 长整型:long,比整型最大的值还大或者比整型最小的值还小的整数。注意:Python中长整型没有大小限制,你的内存有多大,它就能表示多大。

  • 浮点型:float,即小数。

  • 布尔型:bool,常见形式为True, False,表示逻辑真和逻辑假,其实背后的实现是数字1和0.

  • 复数:complex,Python是为数不多语法层面上支持复数的语言,表现为形如1+2j的形式。可以直接支持两个复数的运算。

Python中的所有数据类型都是对象。你可以通过type()函数查看一个变量的类型。

Python中字符串有4种表现形式:单引号、双引号、三引号:

string1 = 'this is a str'

string2 = "this is a str"

string3 = '''this is a str

这里还是string3的范围'''

string4 = """this is a str"""

其中,第3/4种字符串表现形式都是三引号引起来的。如果在字符串的引号之前加上一个u,则表示这是一个unicode字符串,如果加上r,则表示这是一个原始字符串 ,这两种类型,对于初学者暂不讨论。值得注意的是,Python中没有C-Like语言中的字符类型。


运算符、控制语句

运算符

Python中没有类似于C/C++/Java的自增自减运算符,因为在Python中,数字是一种不可变类型(immutable),对数字的操作都会产生新的对象而不是修改原来的对象。但是i = i + 1一样可以写为i += 1。

注意:Python2.5以后的除法为地板除,即5/2=2而不是5/2 = 2.5。

Python常见的逻辑运算符为:

  • !=, <>:不等于,表示两边的值不相等,推荐使用前一种。1 != 2。

  • ==:等于,表示两边的值相等。2 == 2。

  • and:逻辑与,如果两边的值都为True则整个值为True,反之为False。1==1 and 2==2。

  • or:逻辑或,如果两边有一个值True则整个值为True,反之为False。1==2 or 2==2。

  • not:逻辑非,如果值为True,则结果为False。not 2==1。

控制语句

条件语句:

Python中的条件语句只有if-elif-else,没有switch-case,但是有经验的开发者通常使用map这一结构来达到比switch-case更加优雅,更加Pythonic的实现,这个后续再说。

if条件1:

语句块1

elif条件2:

语句块2

else:

语句块3

elif类似于其它语言中的else if。

循环语句:

Python中有两种方式表达循环语句:

while 循环:

while条件:

语句块

for循环:

for变量in集合:

语句块

值得注意的是Python中没有C-Like语言里的for(int i=0; i<10; i++)的语法,不过可以使用xrange或者range函数实现同样的效果。前一个函数返回一个生成器,后一个函数返回list,一般推荐使用前一个,至于这两个函数的异同,后面有时间细聊。


集合

Python中常见的集合类型有:list,tuple,set,dict。

list

list表达的是一列数据的集合,列表中的元素可以增加、删除、查找等操作:

In[1]: l = ['this','is','a','list']# 初始化一个list

In[2]: type(l)

Out[2]: list

In[3]: l.index('is')#查找元素

Out[3]: 1

In[4]: l.append('new item')#新增元素

In[5]: l

Out[5]: ['this','is','a','list','new item']

In[6]: l.reverse()#反转列表

In[7]: l

Out[7]: ['new item','list','a','is','this']

In[8]: l.remove('is')# 删除元素

In[9]: l

Out[9]: ['new item','list','a','this']

tuple

tuple类似于list,同样表示一组数据的集合,不同的是,tuple是写保护的,即:tuple不可以对其元素做任何修改操作(新增、删除等):

In[1]: t = (1,2,3)# 初始化

In[2]: t

Out[2]: (1,2,3)

In[3]: type(t)

Out[3]: tuple

set

set表示一个不重复元素的集合,值得注意的是:set是无序的。

In[1]: s = {'this','is','a','a','set'}# 初始化

In[2]: s

Out[2]: {'a','is','set','this'}

In[3]: type(s)

Out[3]: set

In[4]: s.add('new item')# 新增元素

In[5]: s

Out[5]: {'a','is','new item','set','this'}

In[6]: s.remove('a')#删除元素

In[7]: s

Out[7]: {'is','new item','set','this'}

dict

dict表示一组数据的对应关系,与set一样,dict是无序的(你可以通过collections中的OrderDict来达到有序)。同时,对于初学者,dict与set的声明方式容易混淆:

In[1]: d = {'a': 'A','b': 'B'}# 初始化

In[2]: d

Out[2]: {'a': 'A','b': 'B'}

In[3]: d['a']

Out[3]: 'A'

In[4]: d['c'] = 'C'# 新增元素

In[5]: d

Out[5]: {'a': 'A','b': 'B','c': 'C'}

In[6]: deld['a']#删除元素

In[7]: d

Out[7]: {'b': 'B','c': 'C'}

函数(初步)

在Python中声明函数的方式如下:

def add(num1,num2):

returnnum1 + num2

通其它语言一样,你可以在函数中通过return返回值。不同的是,Python中函数可以有多个返回值,比如下面的函数,返回了两个数的和以及差:

def calc(n1,n2):

returnn1 + n2,n1 *n2

add,sub = calc(5,1)

print add,sub# 6 4

其实这里并不是真的返回了两个值,而是将返回值组装成一个tuple再返回。


小结

Python中最最最基础的部分差不多就是这些了,后面会继续分享一些Pythonic的Python代码写法。

Python 基础:分分钟入门的更多相关文章

  1. Python 基础:入门必备知识

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:程序员野客 先看下咱们的基础目录1 标识符2 关键字3 引号4 编码5 ...

  2. 第一阶段——CentOS6_Python3.6.1笔记(尚学堂-Python基础快速入门)+ 【补充】麦子-Python程序入门与进阶

    虚拟机环境: 设置网络 .修改网络地址 .设置网卡为nat模式 .确保物理机启动dhcp.net服务 .编辑文件:vim /etc/sysconfig/network-scripts/ifcfg-et ...

  3. python基础之入门基础

    编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件 ...

  4. Python基础——函数入门

    等待更新…………………… 后面再写

  5. 零基础如何入门Python

    编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...

  6. Python基础入门教程

    Python基础入门教程 Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循 ...

  7. Python基础入门教程,Python学习路线图

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...

  8. Python怎么样入门?Python基础入门教程

    给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...

  9. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  10. Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 6. 条件

    前面的教程中,我们已经可以让小海龟绘制出各种图形了.但是,所有绘图的代码都是预先编好的,程序一旦运行起来,运行结果(绘制的图形)就是固定不变的.这一节中,咪博士将教大家如何让海龟响应用户的输入. im ...

随机推荐

  1. 高性能迷你React框架anujs1.0.8发布

    本版本由于得到业务线同学的大力支持,掀出许多问题,因此改进地方良多,为anujs在完美替换React的道路上前进了不少.现在anujs经测试可以运行于IE7中.至少怎么做可以参看官网,https:// ...

  2. faster-RCNN框架之rpn 较小目标检测,如果只使用rpn,并减少多个候选框

    通常faster-rcnn目标检测有两个步骤,一个是侯选框生成,一个是侯选框微调+目标区分,但是对于单目标识别, 我经常喜欢只使用rpn网络,效果还不错,不过仅仅的rpn使用参考的参数通常会造成一个目 ...

  3. Python类继承(转发)

    目录 一.概述 二.类的继承 2.1 继承的定义 2.2 构造函数的继承 2.3 子类对父类方法的重写 三.类继承的事例 回到顶部 一.概述 面向对象编程 (OOP) 语言的一个主要功能就是“继承”. ...

  4. [leetcode]339. Nested List Weight Sum嵌套列表加权和

    Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ...

  5. CentOS No package nginx available.

    CentOS No package nginx available. yum install epel-release 如果不行 https://blog.csdn.net/u012965373/ar ...

  6. 6L - 大菲波数

    Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值.  Input 输入第一行为一个整数N,接下来N行 ...

  7. 3T - A1 = ?

    有如下方程:A i = (A i-1 + A i+1)/2 - C i (i = 1, 2, 3, .... n). 若给出A 0, A n+1, 和 C 1, C 2, .....C n. 请编程计 ...

  8. JavaScript 排序算法

    排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因此,比较的 ...

  9. class反射

    1.获取类的方式: //第一种方式: Class c1 = Class.forName(User); //第二种方式: //java中每个类型都有class 属性. Class c2 = User.c ...

  10. C++ MFC棋牌类小游戏day5

    先整理一下之前的内容: 1.画了棋盘,把棋盘的每个点的状态都保存起来. 2.画棋子,分别用tiger类和people类画了棋子,并且保存了棋子的初始状态. 下面开始设计棋子的移动: 1.单机棋子,选中 ...