Life is short,you need python!(2)

前言

基础语法,后附福利。

嘻嘻,刚开始学Python,还是小白一只。如果我的文章有幸被大神看到,请批评指正哦。感谢!!!


【1】先来个小程序镇镇场面

提问:用递归法求正整数N的阶乘

回答:(SHOW TIME )

C语言版
C++版
Python版

是不是感觉各有千秋呀?学过C或者C++的小伙伴们一起来对比看看Python的独特之处在哪里吧?没有学过的小伙伴也能看懂哦(偷偷告诉你们,这三种语言我都是小白哈哈)。


【2】Python的“头文件”

写一个程序第一步写什么?想想C或者其他编程语言,没错就是头文件。头文件是C/C++程序不可缺少的组成部分。使用头文件,应该注意头文件的作用和用法相关知识点。

各类“头文件”

脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它。

#!/usr/bin/python : 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器,相当于写死了python路径;

#!/usr/bin/env python(推荐): 这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。


【3】Python基础语法

1)两种编程方式

交互式编程:不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。但是不能保存啊!

脚本式编程:通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。 Python 脚本程序保存的 文件将以 .py 为扩展名。这个就是能保存的啦!

2)字符

①Python 标识符

在 Python 里,标识符由字母、数字、下划线(_)组成,但不能以数字开头

Python 中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

Python 可以同一行显示多条语句,方法是用分号 ; 分开

Python 保留字符

所有 Python 的关键字只包含小写字母。它们已经被官方预订,不能用作常数或变数,或任何其他标识符名称

保留字符合集

3)缩缩缩缩进!

Python 最有(bian)趣(tai)的地方就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断,而是用缩进来写模块。缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量

或许,Tab和空格打架了

错误也许意味着你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。因为在 Python 的代码块中必须使用相同数目的行首缩进空格数。

建议你在每个缩进层次使用 单个制表符 两个空格四个空格 , 切记不能混用。

【注意!有空行出没!】函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。空行与代码缩进不同,空行并不是Python语法的一部分,但空行是程序代码的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构

4)换行,换不换?

犹记得,遇见C和C++,/n便可以让她们优雅转身。但Python是个独特的女孩子……

①(多行一条)Python语句中一般以新行作为为语句的结束符,但是简单的斜杠( \)便可以将一行的语句分为多行显示,而且语句中包含 [], {} 或 () 括号就不需要使用多行连接符了哦!

\
不需要啦!

②(一行多条)Python语句之间使用分号(;)分割也可以实现在同一行中使用多条语句;

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 。

5)引号

管它引号( ' )、双引号( " )、三引号( '''""" ) 统统都可以用来表示字符串,但是引号的开始与结束必须是相同类型,前后一致哦!

三引号还可以做注释,嘻嘻(见下面)。

6)注释

嘻嘻,回去看看我那个对比图。

看到了吧,python中单行注释采用 # 开头,注释可以在语句或表达式行末。python 中多行注释使用三个单引号(''')或三个双引号(""")

7)代码组

【官方解释】代码组:缩进相同的一组语句构成一个代码块。像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。首行及后面的代码组称为一个子句(clause)。

【小潇儿理解】咱俩对齐咱俩好,咱俩就是代码块!

8)命令行参数

这个神秘操作就是用来用脚本形式执行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) 元组的列表。 第二个是参数列表,包含那些没有'-'或'--'的参数。】

9)使用数据

上次咱们讲了好多数据类型啊,其实就是五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典),再精简点就是两类:数字型(整型,长整型,浮点型,复数型)和非数字型(字符串,列表,元组和字典 )。知道有什么,接下来看看它们能做什么吧?

①非数字型的共同点:都可以使用切片、链接(+)、重复(*)、取值(a[])等相关运算;

这里主要介绍一下切片,有了切片操作,很多地方循环就不再需要了。Python的切片非常灵活,一行代码就可以实现很多行循环才能完成的操作。看看它的各种应用吧!

切片(地方循环被pass,因切片非常灵活,一行代码就可以实现很多行循环才能完成的操作)  

②非数字型的不同点:列表可以直接赋值,元组不可以赋值,字典按照dict[k]=v的方式赋值

python 的所有数据类型都是类,可以通过 type() 和 isinstance()查看变量的数据类型,区别就是: type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

上 type() 、下 isinstance()  
两者区别

10)运算符

 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352