一、运算符
1、算数运算
2、比较运算
3、逻辑运算
4、赋值运算
5、成员运算
6、小结
Python中的运算符大体上和其他语言类似,比如C,C++,JAVA。在学习的过程中如果有其他语言的知识,只需要记住一些特殊的运算符即可。在这里,由于Python的发展因素,Python2.x与Python3.x共存的情况下,需要大家了解两个版本中运算符的细微差别。比如,'<>'运算符和'/'在Python2和Python3中的区别,以及在进行比较运算时,Python2支持不同类型变量比较,Python3不支持。
这就是Python基本运算符了,是不是很简单?
二、基本数据类型
1、数值型
-
整型 int
通常被称为是整数或整数,没有小数点的正或负整数。普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制。
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
1 num = 10 2 #此时num就表示10,一个int型变量
-
长整型 long(Python3取消)
无限大小的整数。在整数后加L或l(推荐L因为不会与数字1混淆)。这种长整型在Python3中被取消,使用int型来代表普通整型和长整型。
1 num = 45555L 2 #此时num就为一个长整型 3 #在Python3中统一使用int表示整型
-
浮点型 float
数学中的小数。在运算中,整型和浮点型运算,结果为浮点型。
对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10**9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
1 num = 2.53 2 #此时num就为一个浮点型 3 num2 = num*100 4 #算术结果为253,但num2此时为浮点类型,代码结果为253.0
-
复数 complex
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
1 num = 2.5+3.6j 2 #此时num表示一个复数 3 #还有一个种写法,效果一样 4 num = complex(2.5,3.6)
2、布尔型
真或假,0或1
3、字符串
Python字符串即可以用单引号也可以用双引号括起来
字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分。
1 str = 'hello world' 2 str2 = "hello world" 3 #num和num2效果一样 4 #如果我们字符串中有 ' 或者 "怎么办?使用\转义字符 5 str3 = "i\'m OK!" 6 #str3 表示i'm OK! 7 #转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\
字符串自带常用函数:
简单介绍了一直常用的字符串自带函数
1 capitalize(self): 2 """ 首字母变大写 """ 3 4 center(self, width, fillchar=None): 5 """ 内容居中,width:总长度;fillchar:空白处填充内容,默认无 """ 6 7 count(self, sub, start=None, end=None): 8 """ 子序列个数 ,sub为子序列,start和end表示从主串中截取一段""" 9 10 decode(self, encoding=None, errors=None): 11 """ 解码,将bytes类型解码成string类型 """ 12 13 encode(self, encoding=None, errors=None): 14 """ 编码,针对unicode,返回bytes类型 """ 15 16 endswith(self, suffix, start=None, end=None): 17 """ 是否以 suffix子串 结束,返回布尔类型 """ 18 19 expandtabs(self, tabsize=None): 20 """ 将tab转换成空格,默认一个tab转换成8个空格 """ 21 22 find(self, sub, start=None, end=None): 23 """ 寻找子序列sub位置,如果没找到,返回 -1 """ 24 25 format(*args, **kwargs): 26 """ 字符串格式化 """ 27 28 index(self, sub, start=None, end=None): 29 """ 子序列位置,如果没找到,报错 """ 30 31 isalnum(self): 32 """ 是否是字母和数字,返回布尔类型 """ 33 34 isalpha(self): 35 """ 是否是字母 """ 36 37 isdigit(self): 38 """ 是否是数字 """ 39 40 islower(self): 41 """ 是否小写 """ 42 43 join(self, iterable): 44 """ 连接 """ 45 46 ljust(self, width, fillchar=None): 47 """ 内容左对齐,右侧填充 """ 48 49 lower(self): 50 """ 变小写 """ 51 52 lstrip(self, chars=None): 53 """ 移除左侧空白 """ 54 55 56 partition(self, sep): 57 """ 分割,前,中,后三部分 """ 58 59 replace(self, old, new, count=None): 60 """ 替换 """ 61 62 rjust(self, width, fillchar=None): 63 """右对齐,左填充""" 64 65 split(self, sep=None, maxsplit=None): 66 """ 按sep分割, maxsplit最多分割几次 """ 67 68 splitlines(self, keepends=False): 69 """ 根据换行分割 """ 70 71 startswith(self, prefix, start=None, end=None): 72 """ 是否以prefix起始 """ 73 74 strip(self, chars=None): 75 """ 移除两端chars字符 """ 76 77 78 swapcase(self): 79 """ 大写变小写,小写变大写 """ 80 81 translate(self, table, deletechars=None): 82 """转换,需要先做一个对应表,最后一个表示删除字符集合"""
4、列表
用符号[]表示列表,中间的元素可以是任何类型,用逗号分隔。list类似C语言中的数组,用于顺序存储结构。
创建代码:
1 list = ['zss','hello','world'] 2 list2 = list(['zss','hello','world']) 3 #list和list2创建方式等价
列表自带常用函数:
1 append(self, p_object): 2 """ 将p_object加入列表的尾部 """ 3 4 count(self, value): 5 """计算value在列表出现的次数""" 6 7 extend(self, iterable): # real signature unknown; restored from __doc__ 8 """ 在list尾部加入iterable,iterable为迭代类型,列表元组或字典 9 字典仅在列表尾部添加value值 10 """ 11 pass 12 13 index(self, value, start=None, stop=None): 14 """ 15 返回value在列表中出现的索引 16 """ 17 18 insert(self, index, p_object): 19 """在指定index位置插入p_object""" 20 21 pop(self, index=None): 22 """ 23 取出index位置处对象,并将其剔除出列表,默认列表尾部 24 """ 25 26 remove(self, value): 27 """ 28 取出列表value元素,只去除第一个找到的! 29 """ 30 31 reverse(self): 32 """ 反转列表 """ 33 34 sort(self, cmp=None, key=None, reverse=False): 35 """排序""" 36
5、元组
元组是和列表相似的数据结构,但它一旦初始化就不能更改,速度比list快,同时tuple不提供动态内存管理的功能,需理解一下规则:
tuple可以用下标返回一个元素或子tuple
表示只含有一个元素的tuple的方法是:(d,)后面有个逗号,用来和单独的变量相区分
1 tuple = (123,233) 2 #和列表相似的创建
元组常用函数
1 count(self, value): 2 """value出现次数 """ 3 4 index(self, value, start=None, stop=None): 5 """ 6 第一个value出现的位置 7 """
6、字典(无序键值对)
字典是一种无序存储结构,包括关键字(key)和关键字对应的值(value)。字典的格式为:dictionary = {key:value}。关键字为不可变类型,如字符串、整数、只包含不可变对象的元组,列表等不可作为关键字。如果列表中存在关键字对,可以用dict()直接构造字典
字典常用函数
1 clear(self): 2 """ 清除内容 """ 3 4 copy(self): 5 """ 浅拷贝 """ 6 7 get(self, k, d=None): 8 """ 根据key获取值,d是默认值 ,可使用字典名(key)""" 9 10 has_key(self, k): 11 """ 是否有key ,Python3中取消!""" 12 13 items(self): 14 """ 所有项的列表形式 """ 15 16 iteritems(self): 17 """ 项可迭代 """ 18 19 iterkeys(self): 20 """ key可迭代 """ 21 22 itervalues(self): 23 """ value可迭代 """ 24 #可迭代在Python3中取消,故不太常用 25 26 keys(self): 27 """ 所有的key列表 """ 28 29 pop(self, k, d=None): 30 """ 获取并在字典中移除 """ 31 32 popitem(self): 33 """ 获取并在字典中移除 """ 34 35 setdefault(self, k, d=None): 36 """ 如果key不存在,则创建,如果存在,则返回已存在的值且不修改 """ 37 38 update(self, E=None, **F): 39 """ 更新,将新的字典类型加入 40 """ 41 42 values(self): 43 """ 所有的值 """ 44 45 #Python3中取消 46 viewitems(self): 47 """ 所有项,只是将内容保存至view对象中 """ 48 49 viewkeys(self): 50 51 52 viewvalues(self): # real signature unknown; restored from __doc__
7、bytes类型
对应于2.X版本的八位串,定义一个bytes字面量的方法如下:
b = b'zss' #b就是一个bytes类型的变量
小例子:将自己的名字用二进制输出
1 name = '张帅帅' 2 for i in name: 3 #循环字符串得到每个汉字 4 #使用bytes函数得到每个汉字的字节码,列表形式 5 name_list = bytes(i,encoding='utf-8') 6 for j in name_list: 7 #遍历每个汉字的字节码,打印默认十进制 8 #使用bin将十进制转换为二进制 9 print(bin(j))
8、set类型
不允许重复的列表,用来有重复元素的列表对象
s = set() s = {}#第二种方式 #创建一个空集合,可用add函数来增加元素 s.add(11) s.add(11) s.add(12) #s中只包含11,12 没有重复的11 s = set(iteration) 可以给一个迭代对象参数,比如列表,可以剔除重复元素
三、其他基本知识
1、注释
Python中使用#注释一行,用""" """注释多行,这和其他语言有些区别,注意区分。
2、格式控制
Python中使用缩进来区分语句和上下文关联,这和主流语言C,JAVA有所区别。在写Python代码的时候要严格控制代码的缩进,不使用{}来关联上下文
3、条件语句
条件语句,是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块
Python 编程中 if 语句用于控制程序的执行,基本形式为:
1 if 判断条件1: 2 #当判断条件1为真执行的代码块 3 代码块1 4 else: 5 #当判断条件1为假执行的代码块 6 代码块2
当判断条件众多时,形式为:
1 if 条件1: 2 代码块1 3 elif 条件2: 4 #当条件1为假时,进行条件2的判断 5 代码块2 6 elif 条件3: 7 代码块3 8 else: 9 代码块4
4、循环及相关
-
for循环
for循环与其他语言区别较大,需要注意语法。
#第一种 for i in list:#此时for循环用来遍历列表,可使用这种方式,注意格式!i表示列表中每个元素 循环体 #循环结束条件为遍历完 #第二种 for i in range(len(list)): #使用range函数来表示创建一个指定的范围的数字,生成从0开始长度为列表长度的范围数字 #在Python2中可以使用xrange函数 循环体:
-
while循环
循环的基本思想和其他语言一致,不再赘述。注意Python特有的语法格式
1 while 循环判断条件 : 2 循环体 3 #while循环进入循环体之前会进行条件判断,布尔值为真则进行,假则退出
-
break和continue
break表示退出当前整个循环
continue表示跳过当次循环,继续下一个循环
5、杂项一
杂项是整理阶段性的一些小知识点。
- range和xrange
首先,xrange和range的功能是差不多的,由于在Python3中range取代了xrange,所以我就整理一下range函数的功能。
range函数是用来创建一个范围的数。
一般情况下有这么三种形式使用:
1 #第一种形式,相当于给range函数一个参数,即列表list的长度 2 #range函数默认创建一个范围,即(0,给定数)步长为1 3 for i in range(len(list)): 4 循环体.... 5 6 7 #第二种形式,给定起始位置,即1<=i<10,步长为1 8 for i in range(1,10): 9 循环体 10 11 #第三种形式,给定起始位置,给定步长2,即1<=i<10每次增加2 12 for i in range(1,10,2): 13 循环体
- enumerate
给可迭代对象增加序号,(什么是可迭代对象?即列表,元组,字典),返回enumerate对象
1 for i in enumerate(list): 2 print(i) 3 4 #为list列表对象创建一个带序号的enumerate对象,然后打印。
- Python2.x和Python3.x的区别
整理一下在Python2.x和3.x的区别。
1、数据类型的区别
3.x中取消long型,用int型统一代替
3.x中出现bytes类型,来代表2.x中的八位串
2、运算符的区别
3.x中取消<>
3.x中/运算符保留小数,2.x中只保留整数部分
3、xrange
3.x中取消xrange,使用range统一
4、print函数
3.x使用print() 带括号,2.x中可以不使用(),2.7和2.6可以混用
5、unicode
Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。
现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。
由于 Python3.X 源码文件默认使用utf-8编码
6、异常
在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。捕获异常的语法由 except exc, var 改为 except exc as var。
使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。
1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。
7、去掉了repr表达式``
Python 2.x 中反引号``相当于repr函数的作用。
Python 3.x 中去掉了``这种写法,只允许使用repr函数。
8、字典
dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它。
9、模块的改名
总结
这是Python入门的必备知识,如果学过其他编程语言的同学可以重点关注Python与其他编程语言的区别。没有学过其他编程语言的同学也没有关系,Python当作第一个入门编程语言也是非常友好的,很容易上手,后面会进一步和大家分享学习Python的心得。
另外欢迎大家提出宝贵的意见!谢谢!