python 动态类型

来源:互联网 发布:弹簧刀 知乎 编辑:程序博客网 时间:2024/06/05 06:10

python 动态类型及字符串

缺少类型声明情况

对于C、C++或Java这些静态语言而言,变量必须进行声明。但是对于Python而言,存在动态 语言,其区别就是可以不用进行声明变量类型,就可以进行变量类型变换。如

a=3a='python'a=[1,2,3]

变量、对象和引用

对于上面的例子而言,变量a并没有进行声明,但是可以直接赋值为3,这个时候,a就是一个整型,当a赋值为’python’时,a则是字符串类型,a赋值为[1,2,3]时,则为类表类型。对于这些变化,原因是Python使用的是动态引用方式进行处理变量的。其处理如下:

  1. 创建一个对象来代表值3
  2. 创建一个变量a,如果它还没有创建的话
  3. 将变量与新的对象3相连

其效果如下:

对象引用
如图所示,变量实际上是采用引用方式进行指明对象的。故变量可以是不明确的数据类型。这种方式就是和C++里面的指针类似。

对于这种方式,Python有自己的一套数据处理方式,保证不会声明变量后,不会发生内存泄露。如:

>>> a=3>>> a='python'>>> a=1.23

当创建3时,a指向3,这时a表示整型。当a指向’python’时,3这个对象如果没有其他指向,则会被垃圾回收器回收。同理,当a指向1.23时,’python’字符串则会被回收。

字符串

在Python字符串中,其处理方式也灵活多变,操作方式多样化并且操作简易灵活。其中字符串常见的字符串常量和表达式如下:

操作 解释 s1 = ” 空字符串 s2 = “pthon’s” 双引号 block = \”\”\”…\”\”\” 三重引号块 s3 = r’\temp\spam’ Raw字符串 s4 = u’spam’ Unicode字符串 s1 + s2 合并,在s1字符串末尾加上s2字符串 s2*3 重复字符串 s2[i] 取出字符串s2中的第i+1个字符 s2[i:j] 取出字符串s2第i+1个字符到第j个字符的字符串 len(s2) 获取字符串s2的长度 ‘a %s parrot’ %type 字符串格式化 s2.find(‘ab’) 字符串调用,搜索s2中是否存在’ab’字串 s2.replace(‘ab’,’cd’) 将所有的子串’ab’替换为’cd’ s1.split(‘,’) 在,号处分割字符串 s1.isdigit() 判断s1是否全为数字组成 s1.lower() 将s1字符串中的英文字母转换为小写字母 for x in s2 迭代s2字符串中的字符

此外,字符串处理,还可以使用正则表达式进行处理,正则表达式模块在Python标准库re模块中。

对于字符串,由于表达有限,故有些字符串不能直接表达。需要进行转义,即使用一些字符组合来表达一个字符。其中常用的转义字符表达如下:

转义 意义 \newline 忽略该行的换行,表示连续 \|反斜杠() \’ 单引号(‘) \” 双引号(“) \a 响铃 \b 倒退 \f 换页 \n 新行(换行) \r 返回 \t 水平制表符 \v 垂直制表符 \N{id} Unicode数据库ID \uhhhh Unicode 16位的十六进制值 \Uhhhh Unicode 32位的十六进制值 \xhh 十六进制值 \0oo 八进制值 \0 Null(不是字符串结尾) \other 不转义(保留)

扩展分片:第三个限制值

在Python中,分片表达式在可选的扩展中增加了第三个值,该值表示间隔元素进行选值。

0 0
原创粉丝点击