切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
【Love Python】【03】打通任督二脉之基本数据类型[复制链接]
发表于 2014-4-1 10:04:32 | 显示全部楼层 |!read_mode!
1 python一切皆为对象,包含了一系列的数据和操作这些数据的方法的一个整体,就叫作对象。
自行车对象
属性:手刹车,轮胎,脚踏板
方法:如何前进的方法,控制停止的方法,控制方向

2.数据类型的组成
组成3部分。
身份         id()方法来看一看他的唯一标示符,内存地址靠这个哦!
类型         type()来看一看。
值             数据项。
>>> a=123
>>> type(a)
<type 'int'>
>>> id(a)
140447230005584
>>> a
123
>>> 

《python核心编程》中曾给出过一个结论:“python里一切都是指针,所以不用再考虑指针这个问题了!”

3,常用基本数据类型.
int 整型                a=123
boolean 布尔        True/False 注意区分大小写
string  字符串        a='123'
list 列表                a=[1,2,3]
tuple 元组             a=(1,2,3,45)
dict 字典               a={'name':'t00ls','url':'www.t00ls.net'}

4.数据类型的可变和不可变
不可变类型:int,string,tuple    (整型、字符串、元组)
>>> a='aaa'
>>> print a
aaa
>>> a='bbb'
>>> print a
bbb
>>> 

虽然a的值最终是bbb但不能说a的值就从aaa改变为了bbb;而只能说a之前是数据对象aaa的引用,现在变为了数据对象bbb的引用;因为他是不能修改自己的值的,
上述结果可以通过查看唯一标识符id()来看出是新建了一个数据对象为bbb,然后对其进行引用;

可变类型:list,dict
>>> a=[1,2,3,4]
>>> id(a)
4469453096
>>> a.append(5)
>>> id(a)
4469453096
>>> a
[1, 2, 3, 4, 5]
>>> 


5.变量之赋值一切皆为引用,动态性与动态类型之为何不再动态
动态性:不像c那样需要先定义变量的类型然后再存储对应的数据类型;
不再动态:也就是说在做一些不同的数据类型之间的操作时她不会自动给你进行做一些转换,如下例:
>>> a='123456'
>>> a+1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> int(a)+1
123457
>>> 

而同样为动态解析性语言的php则不同:
<?php
        $a = '123456';
        echo $a + 1;        //123457
?>

也可以认为这方面她比php更中规中矩,如果你觉得这个特性无伤大雅的话再看php:
<?php
        $a = '123456cccc';
        echo $a + 1;                //123457
        
        $b = '123';
        var_dump($b == 123); //bool(true)
        var_dump($b === 123);//bool(false)
?>

不是想起了这句话:“人生苦短、我用python!”
python中是不存在===的  ==既判断值又判断类型

6.互相转换之int,bool
int()


7,len之需注意
            len()
          python默认是ascii编码 一个中文字符占3个字节,有时候看到的字符串前面跟着的小尾巴到底是什么东西
        >>> a='你好'
        >>> len(a)
        6
       >>> g=a.decode('utf-8')
        >>> len(g)
        2
        >>> a=u'你好'
        >>> len(a)
        2
        >>> 
        //u为转义为unicode

        >>> a='你好\n'
        >>> print a
        你好
        
        >>> a=r'你好\n'
        >>> print a
        你好\n
        >>> 
        //r为不要转义  转义字符


8,访问子字符串,序列来了。
成员有是有序排列的,可以通过下标偏移量访问到它的一个或者几个成员
>>> a='abc'
        >>> a[0]
        'a'
        >>> a[len(a)-1]    //找最后一个元素,也可以直接a[-1]
        'c'
        >>> a[0:]
        'abc'
        >>> a[0:1]
        'a'
        >>> 


9,替换字符串
help(str)    //查看所有的str操作方法

        >>> a='abcccccc'
        >>> help(str)
        
        >>> help(str)
       
        >>> a.replace('b','ddddd')
        'adddddcccccc'
        >>> a='ascccccc'
        >>> a.replace('s','bbbb')
        'abbbbcccccc'
        >>> print a
        ascccccc                              //因为str为不可变数据类型,所以不可能自己修改自己
        >>> b=a.replace('s','bbbbb')
        >>> print b                        //只有通过重新赋值才可以修改
        abbbbbcccccc
        >>>


10,字符串拼接
1.超级丑陋之千万别用。
        >>> a='aaaa'
        >>> b='bbbb'
        >>> print a+b
        aaaabbbb
        >>> 
        因为这样两个相加实际上中间产生了一个临时对象,而这种操作越多创建的
        临时对象就越多,数据量大到一定程度是极其消耗性能的。所以这种写法极其
        的丑陋!

2.可选方案之字符串模板(%s占位符)
>>> print "my name is %s t00ls"  % "hahahaha "
my name is hahahaha  t00ls
>>> 

>>> print "my name is %s @ %s"  % ("'Love Python' ",'T00ls')
my name is 'Love Python'  @ T00ls
>>> 

3.优秀的拼接方案
        >>> a='abccccc'
        >>> b='ddddfff'
        >>> c='eeeeerrr'
        >>> "".join([a,b,c])
        'abcccccddddfffeeeeerrr'
        >>> "++".join([a,b,c])
        'abccccc++ddddfff++eeeeerrr'
        >>> 


11,读写文本来了
open('a.txt',w)                    #w写的方式打开;r读;a以追加的方式写入

        >>> d=open('a.txt','w')            #以写的方式打开a.txt
        >>> d.write('hi.\nsecond  hi')   #写入字符
        >>> d.close()                        #一定要记得关闭
        >>> d=open('a.txt','r')            #以读的方式打开a.txt
        >>> print d                        #直接打印会出错
        <open file 'a.txt', mode 'r' at 0x103792780>
        >>> print d.readline()            #读一行
        hi.
        
        >>> print d.readline()            #在读一行
        second  hi
        >>> print d.read(100)            #读前100个字符,因为游标已经在文件内容的最后了,所以什么都读不到了
        
        >>> d.seek(0)                    #把游标清零
        >>> print d.read(100)            #再尝试读前100个字符,可以读出
        hi.
        second  hi
        >>> 

上篇好像内容有点少了  再加上前面的基础可能会比较简单,所以这篇就多了点,另外还想再啰嗦一句:我觉得学一门编程就像打太极一样,每一招一式可能看起来都简单的不忍直视,但是到掌握到足够多的招式之后的灵活应用可能就会有四两拨千斤的效果,也希望想学python的基友大家一起坚持:)照旧抛出俩小题,感兴趣的回复解答下:
1 字符串:
        a = 'abcd'
        用2个方法取出字母d
2:
        a = 't00ls'
        b = 'python'
        用你感觉最舒服的字符串拼接的方法写入到go.txt中:
my name is python,i love t00ls.

友情提示本文档为连载系列:) 抚菊深思@t00ls.net    店小二01@psacms.com




操千曲而后晓声,观千剑而后识器。
发表于 2014-4-11 15:05:59 | 显示全部楼层
唉,上次看了大牛的文章,不过没注意%s的拼接方法,看到老王的blog,然后就了下demo,回来论坛一看,原来当初俺走神了,感谢大牛的分享,其实有些东西还真的没认真琢磨过。看着这个页面没人做题,就瞎写了点,勿喷
1
print a[3]
print a[3:]
print a.pop()
print a[-1:]
print a[---1:]
2.
a='t00ls'
b='python'
c='my name is {0},i love {1}'.format(a,b)
p=open('go.txt','a+')
p.write()
[/mw_shl_code]

已有 1 人评分金币 收起 理由
店小二01 + 10

总评分: 金币 + 10   查看全部评分

代码区

GMT+8, 2019-11-22 01:17

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部