前言python
基础语法,后附福利。编程
【1】先来个小程序镇镇场面小程序
提问:用递归法求正整数N的阶乘app
回答:(SHOW TIME )编程语言
C语言版ide
C++版函数
Python版spa
是否是感受各有千秋呀?学过C或者C++的小伙伴们一块儿来对比看看Python的独特之处在哪里吧?没有学过的小伙伴也能看懂哦(偷偷告诉大家,这三种语言我都是小白哈哈)。操作系统
写一个程序第一步写什么?想一想C或者其余编程语言,没错就是头文件。头文件是C/C++程序不可缺乏的组成部分。使用头文件,应该注意头文件的做用和用法相关知识点。命令行
各种“头文件”
脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它。
#!/usr/bin/python : 是告诉操做系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器,至关于写死了python路径;
#!/usr/bin/env python(推荐): 这种用法是为了防止操做系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操做。
交互式编程:不须要建立脚本文件,是经过 Python 解释器的交互模式进来编写代码。可是不能保存啊!
脚本式编程:经过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器再也不有效。 Python 脚本程序保存的 文件将以 .py 为扩展名。这个就是能保存的啦!
①Python 标识符
在 Python 里,标识符由字母、数字、下划线(_)组成,但不能以数字开头。
Python 中的标识符是区分大小写的。
如下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的表明不能直接访问的类属性,需经过类提供的接口进行访问,不能用 from xxx import * 而导入;以双下划线开头的 __foo 表明类的私有成员;以双下划线开头和结尾的 __foo__ 表明 Python 里特殊方法专用的标识,如 __init__() 表明类的构造函数。
Python 能够同一行显示多条语句,方法是用分号 ; 分开。
② Python 保留字符
全部 Python 的关键字只包含小写字母。它们已经被官方预订,不能用做常数或变数,或任何其余标识符名称。
保留字符合集
Python 最有(bian)趣(tai)的地方就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其余逻辑判断,而是用缩进来写模块。缩进的空白数量是可变的,可是全部代码块语句必须包含相同的缩进空白数量。
或许,Tab和空格打架了
错误也许意味着你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改成一致便可。由于在 Python 的代码块中必须使用相同数目的行首缩进空格数。
建议你在每一个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用。
【注意!有空行出没!】函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。空行与代码缩进不一样,空行并非Python语法的一部分,但空行是程序代码的一部分。书写时不插入空行,Python解释器运行也不会出错。可是空行的做用在于分隔两段不一样功能或含义的代码,便于往后代码的维护或重构。
犹记得,碰见C和C++,/n即可以让她们优雅转身。但Python是个独特的女孩子……
①(多行一条)Python语句中通常以新行做为为语句的结束符,可是简单的斜杠( \)即可以将一行的语句分为多行显示,并且语句中包含 [], {} 或 () 括号就不须要使用多行链接符了哦!
\
不须要啦!
②(一行多条)Python语句之间使用分号(;)分割也能够实如今同一行中使用多条语句;
③print 默认输出是换行的,若是要实现不换行须要在变量末尾加上逗号 。
管它引号( ' )、双引号( " )、三引号( ''' 或 """ ) 通通均可以用来表示字符串,可是引号的开始与结束必须是相同类型,先后一致哦!
三引号还能够作注释,嘻嘻(见下面)。
嘻嘻,回去看看我那个对比图。
看到了吧,python中单行注释采用 # 开头,注释能够在语句或表达式行末。python 中多行注释使用三个单引号(''')或三个双引号(""")。
【官方解释】代码组:缩进相同的一组语句构成一个代码块。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行以后的一行或多行代码构成代码组。首行及后面的代码组称为一个子句(clause)。
【小潇儿理解】咱俩对齐咱俩好,咱俩就是代码块!
这个神秘操做就是用来用脚本形式执行Python时接收命令行输入的参数的。一步步看吧。
①什么是命令行选项和参数?,
也就是sys.argv。sys 的 sys.argv 获取命令行参数,举个例子就明白啦:
来个完整的例子!
注:sys.argv 是命令行参数列表;len(sys.argv) 是命令行参数个数;sys.argv[0] 表示脚本名。
②如何获取命令行参数?
Python 提供了 getopt 模块来获取命令行参数。getopt模块是专门处理命令行参数的模块,用于获取sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--)。该模块提供了两个方法(getopt.getopt 方法和getopt.gnu_getopt方法)及一个异常处理(Exception getopt.GetoptError 在没有找到参数列表,或选项的须要的参数为空时会触发该异常。异常的参数是一个字符串,表示错误的缘由。属性 msg 和 opt 为相关选项的错误信息)来解析命令行参数。
【getopt.getopt 方法:用于解析命令行参数列表,语法格式:getopt.getopt(args, options[, long_options])
方法参数说明:args: 要解析的命令行参数列表;options: 以列表的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数;long_options: 以字符串的格式定义,long_options 后的等号(=)表示若是设置该选项,必须有附加的参数,不然就不附加参数;该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有'-'或'--'的参数。】
①非数字型的共同点:均可以使用切片、连接(+)、重复(*)、取值(a[])等相关运算;
这里主要介绍一下切片,有了切片操做,不少地方循环就再也不须要了。Python的切片很是灵活,一行代码就能够实现不少行循环才能完成的操做。看看它的各类应用吧!
切片(地方循环被pass,因切片很是灵活,一行代码就能够实现不少行循环才能完成的操做)
②非数字型的不一样点:列表能够直接赋值,元组不能够赋值,字典按照dict[k]=v的方式赋值。
③python 的全部数据类型都是类,能够经过 type() 和 isinstance()查看变量的数据类型,区别就是: type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。
上 type() 、下 isinstance()
二者区别
is 和 == 相似编译原理中传值与传地址。又或者说是 is 只是传递的指针,判断是否指向同一个地址块,这样 is 两边的参数指向内存中同个地址块,毕竟个人手机跟你的手机不是同一个东西。而 == 则是仅仅判断值相同
①交互模式下,若是变量写在同一行,将会指向同一个对象;
python中会为每一个出现的对象分配内存,哪怕他们的值彻底相等(是相等不是相同哦!),如执行a=2.0,b=2.0这两个语句时会前后为2.0这个Float类型对象分配内存,而后将a与b分别指向这两个对象。因此a与b指向的不是同一对象;
可是为了提升内存利用效率对于一些简单的对象,如一些数值较小的int对象,python就采起重用对象内存的办法。如指向a=2,b=2时,因为2做为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,而后将a与b同时指向已分配的对象。如但果赋值的不是2而是大的数值,状况就跟前面的同样了;
交互模式
②脚本模式
若是使用脚本运行,脚本模式 is 和 == 结果是同样的,不论是否同一行,都是指向同一个地址:
脚本模式
最后附上神秘福利连接,配合食用效果更佳哦!
http://mp.weixin.qq.com/s/9PFo10K5xXYUZlL9x8QjBA