Python学习笔记(1)

**python**

 

# python简史

 

 蟒蛇:解释性的,面向对象的带有动态语义的程序设计语言

 创建者:Guido van Rossum

 

# CNRI时期 python 1.5

# BeOpen时期 python 1.6

# DC时期, Digital Creations 使用python开发了Zope系统

# python 3.0

  2010年获得Tiobe编程语言大奖

 

# python特性

  脚本语言

  高阶动态编程语言

  简单易学

  解释性&编译性:不需要变异成二进制,但是需要解释器, 也可以进行编译,速度更快

  面向对象:及支持面向过程编程又支持面向对象的编程

  可扩展性挤可嵌入性,可以嵌入到c/c++程序,提供脚本功能,部分程序也可以用c或者c++编写

  可移植性:所有程序无需任何修改即可运行在任何平台

  丰富的库:密码系统,GUI, TK,文档生成,单元测试,线程,CGI, 电子邮件

            其他高质量库:wxPython, Twisted, Python图像库等等

  自动化的内存管理

  免费,开源

  ---> 胶水语言

 

# python应用

  google web爬虫,搜索引擎

  yahoo, 管理讨论组

  youtobe, 分享服务

  豆瓣,前台+后台+服务器都用的是python

 

 

文件类型

==================================================

源代码: 以.py为扩展名,有python程序解释,不需要编译

字节代码:编译后生成扩展名为.pyc的文件

          import py_compile

          py_compile.compile("hello.py")

优化代码:经过优化的源文件, 扩展名为.pyo

以上三种均可直接运行

 

/1.py

print("hello, world")

运行 python 1.py

==> hello, world

 

/2.py

import py_compile

py_compile.compile('1.py')

生成文件__pycache__/1.cpython-33.pyc

 

运行 python 1.cpython-33.pyc

==> hello, world

 

生成优化代码:

运行 python -O -m py_compile 1.py

生成文件__pycache__/1.cpython-33.pyo

运行 python 1.cpython-33.pyo

==> hello, world

 

 

python变量

===========================================

>>a1 = 123

>>a2 = 123

>>id(a1)

505912912

>>id(a2)

505912912

于c语言不通,c语言给变量名开辟空间,存放数值,python则相反,数值是存在内存中的

不同变量可以指向同一地址空间的数值

 

 

python运算符&表达式

=============================================

 

赋值运算符

-----------------------

= += -= *= /= %=

 

算数运算符

-----------------------

+ - * / //(整数除法) %(求余) **(求幂)

>> 4/3 

1.33333333333333

>> 4//3

1

 

关系运算符

-----------------------

< > <= >= != ==

>> a = 1

>> b = 1.0

>> a == b

true

>> a = "hello"

>> b = "hello"

>> a == b

true

 

逻辑运算符

------------------------

and or not

 

优先级(低到高)

================================

或 or

与 and 

非 not 

成员:in, not in

同一性:is ,is not

< , <=, >, >=, !=, ==

按位或 |

按位异或 ^

按位与 &

移位 << , >>

+, -

*, /, %

正负号 +x, -x

按位翻转 ~x

指数 **

 

 

数据类型

=======================

# 数字类型

  2.x版本中分为:整型,长整型,浮点型,复数型

  3.x版本中氛围:整型,浮点型,复数型

  可以用type函数查看类型

>> a = 111

>> type(a)

int

>> a = 1.23

>> type(a)

float

>> a = 12j

>> type(a)

complex

 

# 字符串类型

>> "let's go" #正确

>> 'let's go' #错误

转义

>> a = "let's \"go\""

>> print(a)

let's "go"

 

换行 \n

不使用换行,使用三重引号 ''' xxxxxxx  '''

 

>> str = 'abc'

>> str[0]

a

>> str = "abc"

>> str[0]

a

 

切片&索引 操作:

 

>> a = "123456"

>> a[1:4]

1234

>> a[2:]

3456

>> a[:4]

1234

>> a[-1]

6

>> a[::1] 间隔0个一取

123456

>> a[::2] 间隔1个一取

135

>> a[:]

123456

>> a[::]

123456

 

# 序列

 列表,元组,和字符串都是序列

 序列的两个主要特点:索引操作符和切片操作符

 

 

 

# 序列的基本操作:

len()

>> len("abcdef")

*

>> 5*"a"

+

>> "abc" + "bcd"

in

>> "a" in "abc"

max()

>> max("adfe")

f

min()

>> min("dfa")

a

cmp(tuple1, tuple2)

tuple1> tuple2 ==> 1

tuple1< tuple2 ==> -1 

tuple1 = tuple2 ==> 0

cmp("abc", "123") ?

cmp 在3.x版本中不存在

 

 

元组

元组和列表十分相似,只不过元组和字符串一样是不可变的,即不能修改

通常用在使用语句或者用户定义的函数,能够安全的采用一组值的时候

 

创建元组()

空元组 a = ()

含有单个元素的元组 a = ("a",)

一般的元组 a = ("a", "b")

>> a = ()

>> b = (2,)

>> c = (1,2)

>> type(a) ==> tuple

>> type(b) ==> tuple

>> type(c) ==> tuple

错误的写法

>> d = (2)

>> type(d) ==> int

>> d = ("ss")

>> type(d) ==> str

元组的值不能修改

>> a = (2,3)

>> a[1] = 4 #报错TypeError: 'tuple' object does not support item assignment

 

赋值

>> name,age,sex = ("zhang", 20, "man")

>> name ==> "zhang"

>> age ==> 20

>> sex ==> "man"

 

#列表list[]

列表元素可变

>> a = [1]

>> type(a) ==> list

基本操作

索引 list[index]

切片 list[:]

添加 list.append()

查找 var in list

删除 list.remove() #删除第一个出现的元素

>> a = [1,2,3,2]

>> a.remove(2) ==> [1,3,2]

系统方法del

>> del(a[0]) ==> [3,2]

 

 

 

注意:列表重新赋值后,地址空间不变

>> list = [1, 3]

>> id(list) => 85445

>> list[0] = 2

>> id(list) => 85445 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

       

 

 

 

 

你可能感兴趣的:(python,数据类型,列表,元组)