Python开发第一篇 基础篇

Posted kiddy-x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发第一篇 基础篇相关的知识,希望对你有一定的参考价值。

一.python版本间的差异:

    1.1:2.x与3.x版本对比

version 2.x 3.x
print 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保留字

 1 #通过导入keyword模块,我们可以查看当前python保留了哪些关键字
 2 import keyword
 3 
 4 #查看python保留关键字
 5 keyword.kwlist
 6 
 7 #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\']
 8 
 9 #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\']
10 
11 
12 #注意,3.x新增了[\'False\',\'None\',\'True\',\'nonlocal\']同时去除了2.x [\'exec\']的关键字,大家在命名规范时,应该遵循3.x的关键字,便于向后兼容
13 
14 #如果不确定该变量名是否为关键字,也可以通过下面这种方法,检查是为关键字
15 keyword.iskeyword(\'name\')
16 
17 #返回False,说明该变量名不是系统保留关键字,即,可用
View Code

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解释器会将该内存空间收回,这也是有别于其他开发语言的最大特点之一,不需要关注内存的回收,

查看代码
View Code
#当想查看当前的两个变量是否指向同一个内存地址时,可以使用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)

 1 #例如,定义一个元组
 2 a = (\'a\',\'hello\',\'python\',\'1\')
 3 #查看元组的内置方法
 4 dir(a)
 5 #将会输出一个列表形式的方法名称
 6 # 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\']
 7 
 8 #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\']
 9 
10 #元组提供了两个公有方法给我们使用
11 a.count(\'hello\')        #统计元组里面有多少个相同的元素\'hello\',很显然,这里只有1个,所以输出结果为 1
12 
13 a.index(\'hello\')        #返回元素\'hello\'的索引位置,python的索引位置是从0开始的,所以这里的‘hello’元素的索引是1,而不是2.
14 
15 
16 #元组的访问方式
17 a[1]    #显示下标为1的元素,因为元组的下标是从0开始的,所以会显示元素\'hello\'
18 a[2]    #这里会显示第python这个元素
19 a[0:1]    #显示元素从位置0(包括0)  到1(不包括1),即显示\'a\'
20 a[0:2]    #显示元素从位置0(包括0)到2(不包括2),即显示(\'a\',\'hello\')
21 a[-1]    #显示倒数第一个元素,即\'1\' 
22 a[-2]    #显示倒数第二个元素,即\'python\'
23 a[:-2]    #显示元素从位置0(包括),到位置倒数第二个(不包括倒数第二个),之前的元素都显示出来,即(\'a\',\'hello\')
24 a[-2:]    #显示元素从位置倒数第二个(包括)到最后一个(包括),即(\'python\',\'1\')
25 a[0:4:2]    #该方式先将前面的[0:4]条件先筛选出来,然后再进行后面的:2,即每隔一位取一个值,所以这里将显示(\'a\',\'python\')
View Code

2.3:列表(list)

      列表与元组及其相似,不同之处在于,元组的值是固定,不可变的,而列表的值可以通过其自身的公有方法改变的

 1 #定义一个列表
 2 b = [\'a\',\'hello\',\'python\',\'1\']
 3 #查看列表的内置方法
 4 dir(b)
 5 # 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\']
 6 
 7 # 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\']
 8 
 9 b.append(\'tail\')    #在列表末尾追加一个元素\'tail\'
10 b.count(\'python\')    #统计列表中有多少个相同的元素\'python\' 
11 b.extend(\'how\')    #在列表后面追加三个字符串\'h\',\'o\',\'w\'
12 b.index(\'python\')    #显示元素‘python’的索引,这里将输出2
13 b.insert(1,\'niubi\')    #在索引为的位置插入元素\'niubi\',及原来的元素从1往后加1
14 b.pop()    #将列表最后一个元素删除
15 b.remove(\'niubi\')    #删除指定元素,即,将指定的\'niubi\'元素删除
16 b.reverse()    #将列表的元素由原来的从左到右顺序变成从右到左方式排序
17 b.sort()    #将列表按照assci

以上是关于Python开发第一篇 基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第一篇 基础篇(下)

Python开发第一篇基础题目二

Python学习基础篇第一篇——快速入门(适合初学者)

python 基础篇第一篇

Python Web框架Django框架第一篇基础

Python 全栈开发第一篇:目录