python 动态类型

python 动态类型及字符串

缺少类型声明情况

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

a=3
a='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
\uhhhhUnicode 16位的十六进制值
\UhhhhUnicode 32位的十六进制值
\xhh十六进制值
\0oo八进制值
\0Null(不是字符串结尾)
\other不转义(保留)

扩展分片:第三个限制值

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值