Python学习2-基础知识

动态类型简介
在python中,变量没有类型,类型属于对象。而不是变量名。
类型是与对象相关联的,而不是和变量关联。
对象的自动回收机制。
引用
赋值语句就是创建一个对象。
变量总是一个指向对象的指针,而不是可改变的内存区域标签,给一个变量赋一个新的值,并不是替换了原始的对象,而是让这个变量去引用完全不同的另一个对象。
拷贝变量:L1=[2,3,4]
     L2=L1[:]
拷贝的结果时L1和L2指向不同的对象。 也可以用copy模块。
用==和is 都可以检测两个变量是否相等。但是is更加严格(检测两个变量是否引用的同一个对象)
 
Python字符串
空字符串表示为一对双引号  或者一对单引号。
 
python支持正则表达式的模块为re模块。
\a 为响铃字符。
\N{id} Unicode数据库ID
\uhhhh Unicode16位的十六进制
\uhhhhhhhh Unicode32位的十六进制
\xhh 十六进制值
\ooo 八进制值
\o NULL(不还是字符串结尾)
三重引号"""""" 有时候称为块操作符。三重操作符在程序需要输入多i行的文本的时候是很有用的。例如:嵌入多行错误信息,或者heml、xml代码。
 
用in可以判断mop个字符或者字符串是否在另一个字符串中间。
分片:完整的分片的形式为X[I:J:K],这表示“索引X对象中从i开始元素,从偏移量为I直到偏移量为J-1,每隔K元素”,但是对K值有限制,K的取值默认为1.
字符串反转可以用[::-1]来实现
用int()可以将字符串转化为数字,用str()可以将数字转化为字符串。用repr()同样能将数字转化为字符串。
学习eval函数
单个的字符通过ord()函数转换成其对应的ASCII码,而chr()函数进行相反的操作。
可以利用循环完成对字符串内所有字符的函数运算,这些工具也可以用来执行一种基于字符串的数学操作。
>>> S=chr(ord(S)+1)
>>> S
'T'
>>> S=ord(S)+1
>>> S
85
循环使用:
>>> B="1101"
>>> I=0
>>> while B != '':
...     I = I * 2 +(ord(B[0]) - ord('0'))
...     B=B[1:]
...
>>> I
13
 
不可变序列
用replace进行字符串修改,单返回的是新的字符串。list()函数列出字符串。
 
字符串格式化方法format,它提供了更高级的替换工具。
 
字符串格式化
字符串格式化方法调用
python对字符串操作的时候定义了%二进制操作符。
格式化字符串:
1、在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都以%开头。
2、在%操作符右侧放置一个(或多个、嵌入到元组)对象这些对象将会插入到左侧想让Python进行格式化字符串的一个人(或多个)转换目标的位置上去。
>>> 'This is %d %s birds' %(2,'dead')
'This is 2 dead birds'
 
字符串格式化很好用。
字符串格式化表达式含义:
 
在%和字符码之间可以进行其他操作,例如:罗列出左对齐(-),正负号(+-)和补零(0)的标志位。给出数字的整体长途和小数后的位数。
 
基于字典的字符串格式化
>>> "%(n)d %(x)s" % {"n":2,"x":"spam"}
'2 spam'
>>>
上例中,格式化字符串里(n)和(x)引用了右边字典的键,并提取他们相应的值。生成类似HTML或XML的程序往往利用这一技术。
 实例:
>>> reply = """
... Greeting
... Hello %(name)s !
... Your age sqared is %(age)s
... """
>>> values = {'name': "Bob",'age': 23}
>>> print (reply % values)

Greeting
Hello Bob !
Your age sqared is 23
 
内置函数vars的使用:
>>> food= 'spam'
>>> age=23
>>> vars()
{'__builtins__': <module '__builtin__' (built-in)>, 'age': 23, 'cols': ['AAA', 'bbb', 'ccc'], '__package__': None, 'food': 'spam', 'values': {'age': 23, 'name': 'Bob'}, 'x': 1.2345678899999999, 'reply': '\nGreeting\nHello %(name)s !\nYour age sqared is %(age)s\n', '__name__': '__main__', 'line': 'AAA#bbb#ccc', '__doc__': None}
>>> "%(age)d %(food)s" % vars()
'23 spam'
>>>
当字典用一个格式化操作的右边时,它会让格式化字符串通过变量名来访问变量。
 在python中可以通过字符串对象的format的方法使用主题字符串作为模版,并且接受任意多个表示将要根据模版替换的值的参数。
>>> template = '{0},{1},{2}'
>>> template.format('spam','ham','eggs')
'spam,ham,eggs'
>>> template = '{motto},{pork} and{food}'
>>> template.format(motto='spam',pork='ham',food='eggs')
'spam,ham andeggs'
>>> 
 
>>> '{motto},{0} and{food}'.format(42,motto=3.14,food=[1,2])
'3.14,42 and[1, 2]'
format前面的点号,应该为连接符。
格式化输出部分需要仔细研究。格式化方法
 
 
在python中三个主要类型(以及操作)的分类:
数字  (整数、浮点数、二进制、分数等)
               支持加法和乘法。
序列 (字符串、列表和元组)
               支持索引、分片和合并等。
映射 (字典)
               支持通过键索引等。
 
Python中的主要核心类型划分为如下两类:
不可变类型(数字、字符串、元组、不可变集合)
           不可变的分类中没有哪个对象类型支持在原处修改,经管我们总是可以运行表达式来创建新的对象并将其结果分配给对象。
 
可变类型(列表、字典可变集合)
               相反,可变的类型总是通过操作在原处进行修改,而不用创建新的对象,尽管这样的对象可以复制,但远处修改支持直接修改。

posted on 2013-02-02 01:10  无心出岫  阅读(465)  评论(0编辑  收藏  举报