python成长之路——第一天
一.python版本间的差异:
1.1:2.x与3.x版本对比
version | 2.x | 3.x |
print " "或者print()打印都可以正常输出 |
只能print()这种形式打印,否则会出现 SyntaxError |
|
input raw_inut |
input:输出原生的数据类型,输入什么类型的值,就输出什么类型 raw_input:全部以字符串形式输出 |
3.x取消了raw_input方法,只能使用input() 方式提示输入字符串, 该方法和2.x版本的raw_input() 如果想要实现与2.x input()输出原生数据类型的值, 可以使用eval(input()) |
class | 2.x支持新式类,和经典类,使用新式类时,类继承顺序会影响最终继承的结果 | 必须使用新式类,解决了类间继承顺序问题 |
/ | 例如:1/2,2.x输出的值为0 | 例如:1/2 3.x输出的值为0.5 |
1.2:python数据类型
int 有符号整形,如:1,11,111,-1,-111 ... ,2.x范围在-2**31~2**31-1之间,取决于操作系统,不会小于这个范围
float 浮点型,如:1.11.1.111,-1.111 ...
str 字符串,如:'hello' , 'python' , '1' , 'string' ...,注意,字符串需要使用引号(' ')或者双引号("")引起来,
bool 布尔类型,只有两个值,真:True 假:False,任何非零的数据类型,结果都为真,当结果为int 0 时,则为False
long 这个类型只存在2.x版本,取值范围无限大,取决于可用的虚拟内存
complex 复数,如:3.14j,4.53e-7j ...
元组(tuple) 如 ('a','hello','python','1')
列表(list) 如 ['a','hello','python','1']
字典 (dict)如{'name':'zcy','age':25,'job','IT'}
1.3:python编码
python 2.x版本默认string字符编码,1个字符只能存8bit,可以使用内置函数,chr()和ord() 进行字符转换
python 3.x默认使用unicode编码格式,可以使用内置函数unichr()和ord()进行字符转换
1.4:python的命名规范
python变量名(标识符)只能以字母或下划线开头,且不能包含特殊字符,注意python保留关键字不能当作变量名,这样等于重写python的内置方法,可能会影响其他方法的调用,具体python保留字,见1.4.1小节内容
为了书写规范,建议变量名使用统一的风格书写,例如:驼峰式 SunOfBeach 或者 sun_of_beach
单个前导下划线开头的标识符,意味着约定为私有的
两个前导下划线开头的标识符,表示强烈专用的标识符
如果标识符还有两个下划线结束,则该标识符是语言的特殊名称
1.4.1:python保留字
- #通过导入keyword模块,我们可以查看当前python保留了哪些关键字
- import keyword
- #查看python保留关键字
- keyword.kwlist
- #2.x 输出 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
- #3.x 输出 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
- #注意,3.x新增了['False','None','True','nonlocal']同时去除了2.x ['exec']的关键字,大家在命名规范时,应该遵循3.x的关键字,便于向后兼容
- #如果不确定该变量名是否为关键字,也可以通过下面这种方法,检查是为关键字
- keyword.iskeyword('name')
- #返回False,说明该变量名不是系统保留关键字,即,可用
1.5:python注释
python有两种方式注释,一种是单行注释,在语句前加#这个符号,,也可以使用多行注释,使用连续的三个单引号在需要注释的内容范围两侧添加,也可以使用连续的三个双引号。例如:
'''这里是
注释
'''
"""
这里也是
注释
"""
1.6:python的语法
python以简洁著称,摒弃了其他如c的{}花括号方式书写方式,以及为了追求语言的可读性,强制要求语法缩进,同一个语句快的代码缩紧必须相同,否则会出现缩进错误 IndentationError,如果想一行写多条语句,可以使用分号;隔开
1.7:python运算符
+ - * / % // | 加法,减法,乘法,除法,取模,地板除 |
>> << | 左按位移位,右按位移位 |
& ^ | | 按位与,按位异或,按位或 |
** | 指数幂运算 |
> >= == != < <= |
大于,大于等于 等于,不等于 小于,小于等于 |
= **= += -= *= /= %= //= |= &= >>= <<= |
等于,幂等于 加等于,减等于 乘等于,除等于 取模等于,地板除等于 按位或等于,按位与等于 按位右移等于,按位左移等于 |
is is not | 是真,非真 |
in not in | 在里面,不在里面 |
and or not | 且,或,非 |
~ | |
二.python的数据类型操作
2.1:变量赋值操作
- a = 2 #给a变量赋值为2
- b = a #将变量a 的值赋给变量b,相当于是将a指向的内存空间3同时指向了b,此时b也等于3
- a = 5 #给a变量赋值为5,此时由于之前的a已经被赋予一次值,python解释器会将a指向的内存空间改为指向5
- print(a,b)
- (5,2)
- #此时打印输出为5,2,因为虽然b=a,且a的值被改变了,但是b=a仅仅只是将b指向了a指向的内存地址,并不是真正意义上的指向a,a的值改变,仅仅是改变a指向的内存地址,当多个变量指向同一个地址空间时,python自身的内存回收机制,会在这块内存空间做一个标记,有多少个人引用了这块内存空间,就在+多少个1,直到引用为0,此时python解释器会将该内存空间收回,这也是有别于其他开发语言的最大特点之一,不需要关注内存的回收,
查看代码
- #当想查看当前的两个变量是否指向同一个内存地址时,可以使用id()方法
- a = 2
- print(id(a))
- #打印结果为 140723441682448
- b = a
- print(id(b))
- #打印结果为 140723441682448
- #可见,a和b指向的都是同一块地址空间,注:以上两个值与使用的平台有关,不一定都是一样的数值,但是这两个数值一定是相等的
- a = 5
- print(id(a))
- #打印结果为 140723441682376
- print(id(b))
- #打印结果为 140723441682448
- #通过观察两个变量的指针变化,可以发现,a值的改变并不会影响到已经被赋值的b
2.2:元组(tuple)
- #例如,定义一个元组
- a = ('a','hello','python','')
- #查看元组的内置方法
- dir(a)
- #将会输出一个列表形式的方法名称
- # 2.x 输出['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
- #3.x输出 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
- #元组提供了两个公有方法给我们使用
- a.count('hello') #统计元组里面有多少个相同的元素'hello',很显然,这里只有1个,所以输出结果为 1
- a.index('hello') #返回元素'hello'的索引位置,python的索引位置是从0开始的,所以这里的‘hello’元素的索引是1,而不是2.
- #元组的访问方式
- a[1] #显示下标为1的元素,因为元组的下标是从0开始的,所以会显示元素'hello'
- a[2] #这里会显示第python这个元素
- a[0:1] #显示元素从位置0(包括0) 到1(不包括1),即显示'a'
- a[0:2] #显示元素从位置0(包括0)到2(不包括2),即显示('a','hello')
- a[-1] #显示倒数第一个元素,即'1'
- a[-2] #显示倒数第二个元素,即'python'
- a[:-2] #显示元素从位置0(包括),到位置倒数第二个(不包括倒数第二个),之前的元素都显示出来,即('a','hello')
- a[-2:] #显示元素从位置倒数第二个(包括)到最后一个(包括),即('python','1')
- a[0:4:2] #该方式先将前面的[0:4]条件先筛选出来,然后再进行后面的:2,即每隔一位取一个值,所以这里将显示('a','python')
2.3:列表(list)
列表与元组及其相似,不同之处在于,元组的值是固定,不可变的,而列表的值可以通过其自身的公有方法改变的
- #定义一个列表
- b = ['a','hello','python','']
- #查看列表的内置方法
- dir(b)
- # 2.x 输出 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
- # 3.x输出['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
- b.append('tail') #在列表末尾追加一个元素'tail'
- b.count('python') #统计列表中有多少个相同的元素'python'
- b.extend('how') #在列表后面追加三个字符串'h','o','w'
- b.index('python') #显示元素‘python’的索引,这里将输出2
- b.insert(1,'niubi') #在索引为的位置插入元素'niubi',及原来的元素从1往后加1
- b.pop() #将列表最后一个元素删除
- b.remove('niubi') #删除指定元素,即,将指定的'niubi'元素删除
- b.reverse() #将列表的元素由原来的从左到右顺序变成从右到左方式排序
- b.sort() #将列表按照assci
python成长之路——第一天的更多相关文章
2015年12月26日是个特别的日子,我的Python成之路迈出第一步.见到了心目中的Python大神(Alex),也认识到了新的志向相投的伙伴,非常开心. 尽管之前看过一些Python的视频.书,算 ...
一.三元运算 我们在上章学习的if,,else,,有一种简便的方法 他的表达式是这样的:变量 = 值1 if 条件 else 值2 解释过来就是如果aaa等于sss则输出值1否则输出值2 二.类的概念 ...
今天一起走进python的代码世界,一起领悟python的魅力 在很多学习python的书中都会以 print “Hello,world!” 这样的而一个程序为开始,那么其中的 hello,worl ...
七.列表——list Python的列表是一种内置的数据类型,是由Python的基本数据类型组成的有序的集合.有点类似C语言的数组,但与数组不同的是,Python在定义列表的时候不用指定列表的容积(长 ...
三.数据类型 Python基本类型(能够直接处理的数据类型有以下几种)主要有5种 1.整数(int) Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如 ...
经过上章的学习我们已经了解到了列表可以通过索引来获取对应的值,在本章我们将学到通过名字来索引数据,这种结构的类型称之为映射(maooing),在Python中字典是唯一内建的映射类型,其中的值我们称之 ...
有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连 ...
可以将列表和元组当成普通的“数组”,他能保存任意数量任意类型的Python对象,和数组一样都是通过数字0索引访问元素,列表和元组可以存储不同类型的对象,列表和元组有几处重要区别.列表元素用([])包括 ...
五.数据运算与数据运算符 1.算术运算符 算术运算符 运算符 描述 示例 + 加法 >>> 14 - 5 9 - 减法 >>> 14 - 5 9 * 乘法 &g ...
随机推荐
1.输入 log的时候按一下Tab.就会打出 private static final String TAG="Settings"; 2. shift +alt+x 运行 shif ...
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于ASP.NET 5及MVC 6是一个微软全新重新的Web开发平台,之前一些现有的验 ...
由于安装的时候选择的是英文版,所以一进入系统问题就来了:无法输入中文. 我记得自己直接选的输入法是pinyin那个 在网上看到别人到blog,直接转过来吧,只为自己收藏下,如有需要请联系原作者. 转载 ...
OpenMesh 提供了许多可供使用的向量操作函数,使用特别方便. 计算距离: 从官方文档可以看到OpenMesh提供了5个函数,分别为 Scalar length() const // ...
Android图像处理实例教程 原始出处 http://vaero.blog.51cto.com/4350852/856750
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
ObCallback回调钩子检测 2013-12-20 Nie.Meining Ring0 在 PatchGuard 的摧残下,通过 ObRegisterCallbacks 函数注册回调钩子已经成了 ...
在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # Set this to true to enable OpenId au ...
GET和POST是HTTP的两个常用方法. 什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议 ...
题目链接:http://codeforces.com/contest/714/problem/B 题意:给定一个长度为N的初始序列,然后问是否能找到一个值x,然后使得序列的每个元素+x/-x/不变,最 ...