Python 数据类型和控制结构
Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候。不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Python,安装包自带的“Python Manuals”就是一份很好的学习资料(基本上不用去找其他资料了);尤其是其中的Tutorial,非常适合初学者。本文一方面总结了python语言的核心——数据类型和控制结构;另一方面,通过与其他语言的对比表达了我对Python的一些拙见。
数据类型
int, long, float, str, complex
- >>> type(123)
- <type 'int'>
- >>> type(-234)
- <type 'int'>
- >>> type(123456123456)
- <type 'long'>
- >>> type(-123456123456)
- <type 'long'>
- >>> type(123.456)
- <type 'float'>
- >>> type('abc')
- <type 'str'>
- >>> type("hello, world")
- <type 'str'>
- >>> type(123456)
- <type 'int'>
- >>> type(123456789)
- <type 'int'>
- >>> type(1234567890)
- <type 'int'>
- >>> type(12345678901)
- <type 'long'>
可以看到1234567890还是int,12345678901就是long了,说明int是有范围的。记得C/C++的int长度(4B)的同学都知道,C/C++里int的取值范围是:[-2^31, 2^31-1]也就是[-2147483648, 2147483647]。据此,我们可以看看Python的int范围:
- >>> type(2147483647)
- <type 'int'>
- >>> type(2147483648)
- <type 'long'>
- >>> type(-2147483648)
- <type 'int'>
- >>> type(-2147483649)
- <type 'long'>
这次试验说明,Python的int范围和C/C++一样。(事实上和long一样,这里只是因为运行的是32位的python解释器,如果是64位python解释器,int是8字节)
- >>> type(1L)
- <type 'long'>
- >>> type(2l)
- <type 'long'>
- >>> type(123.456)
- <type 'float'>
- >>> type(123456123456.123456123456123456123456)
- <type 'float'>
complex(复数)
- >>> type(3+4j)
- <type 'complex'>
- >>> type(3+4J)
- <type 'complex'>
- >>> type(4j)
- <type 'complex'>
- >>> type(j)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'j' is not defined
- >>> type(1j)
- <type 'complex'>
但是1j不允许直接写成j,j会被当做name查找,如果没找到就会报错。
tuple, list, set, dict
- >>> type([1, 2, 3])
- <type 'list'>
- >>> type({2, 3, 4})
- <type 'set'>
- >>> type((3, 4, 5))
- <type 'tuple'>
- >>> type({'key1': 'value1', 'key2': 'value2'})
- <type 'dict'>
可以看到(), [], {}和它括起来的一系列元素,分别是表示:元组、列表、集合。而dict则是{key1: value1, [key2: value2, ...]}的形式。
- >>> (1, 'two', 3.0)
- (1, 'two', 3.0)
- >>> [(1, 'two', 3.0), '4', 5]
- [(1, 'two', 3.0), '4', 5]
- >>> {1, 2L, 3.0, 4j}
- set([1, 2L, 3.0, 4j])
- >>> {1: 'one', 'one': 1}
- {1: 'one', 'one': 1}
控制结构
顺序结构
语句
- >>> print "hello, world"
- hello, world
并且Python程序没有所谓的“入口”,这和多数脚本语言类似。
弱类型
- >>> a = 123
- >>> b = "asdf"
- >>> c = [3, 4, 5]
- >>> a
- 123
- >>> b
- 'asdf'
- >>> c
- [3, 4, 5]
- >>> a = b
- >>> b
- 'asdf'
- 使用变量前不用向提前声明变量的类型
- 一个变量初始化为一个类型后还能给他赋其他类型的值
函数
- def sayHello(name):
- print 'Hello, ' + name + '!'
- sayHello('Jack')
这段代码的运行结果为:Hello, Jack!
类
- class Man:
- def __init__(self, name):
- self.name = name
- def hello(self):
- print 'Hello, ' + self.name + '!'
- m = Man('Jack')
- m.hello()
这段代码也会输出:Hello, Jack!
类的更多特性和OOP有关,以后有时间再单独发一篇博文展示。
- >>> type(sayHello)
- <type 'function'>
- >>> type(Man)
- <type 'classobj'>
- >>> type(m)
- <type 'instance'>
- >>> type(m.hello)
- <type 'instancemethod'>
- >>> type(Man.hello)
- <type 'instancemethod'>
可以想象,Python世界里的东西都是”灰色“的,解释器对它们”一视同仁“,从来不以貌取人,只看他们现在身上的标签是什么~
选择结构
Python的选择结构以if开始。
bool
- >>> type(1==1)
- <type 'bool'>
- >>> type(True)
- <type 'bool'>
- >>> type(False)
- <type 'bool'>
对于Number(int, long, float, complex),0在if条件上也是False:
- >>> if 1:
- ... print "true"
- ...
- true
- >>> if 0:
- ... print "true"
- ... else:
- ... print "false"
- ...
- false
- >>> if 0.0:
- ... print "0.0 is true"
- ...
- >>> if 0j:
- ... print "0j is true"
- ...
提示:Python是以代码缩进区分代码块的
除此之外,空的string和空的集合(tuple, list, set)也是False:
- >>> if '':
- ... print 'null string is true'
- ...
- >>> if ():
- ... print 'null tuple is true'
- ...
- >>> if []:
- ... print 'null list is true'
- ...
- >>> if {}:
- ... print 'null set is true'
- ...
if, if-else & if-elif-else
- >>> x = int(raw_input("Please enter an integer: "))
- Please enter an integer: 42
- >>> if x < 0:
- ... x = 0
- ... print 'Negative changed to zero'
- ... elif x == 0:
- ... print 'Zero'
- ... elif x == 1:
- ... print 'Single'
- ... else:
- ... print 'More'
- ...
- More
循环结构
for
- >>> a = [1, 'two', 3.0]
- >>> for i in a:
- ... print i
- ...
- 1
- two
- 3.0
这种for迭代集合很方便。
- >>> for i in range(1, 6):
- ... print i
- ...
- 1
- 2
- 3
- 4
- 5
- >>> for i in range(10, 65, 10):
- ... print i
- ...
- 10
- 20
- 30
- 40
- 50
- 60
这里展示了range的两种调用形式,一种是range(a, b),它将返回一个从a(包含a)到b(不包含)的整数列表(list),另一种range(a, b, s),将返回一个a~b,以s为步长的list:
- >>> range(1, 6)
- [1, 2, 3, 4, 5]
- >>> range(10, 65, 10)
- [10, 20, 30, 40, 50, 60]
while
- >>> i = 1
- >>>
- >>> while i < 5:
- ... i = i+1
- ... print i
- ...
- 2
- 3
- 4
- 5
顺便一提,Python里 i=i+1 不能写成i++,Python不支持这种语法;但可以写成 i += 1:
- >>> i
- 5
- >>> i += 1
- >>> i
- 6
- >>> i++
- File "<stdin>", line 1
- i++
- ^
- SyntaxError: invalid syntax
- >>> ++i
- 6
- >>> i
- 6
各位可能会疑惑,为什么++i可以?因为pyhon支持前置的+(正负号)运算,++被当做两次正运算了;同理,+++i,++++i都是一样的;我们可以顺便测一下负号运算:
- >>> i
- 6
- >>> +++i
- 6
- >>> ++++i
- 6
- >>> -i
- -6
- >>> --i
- 6
- >>> ---i
- -6
和想象的结果一致,Great!
输入输出(IO)
- >>> varA = raw_input('please input:')
- please input:Life is too short, you need Python!
- >>> varA
- 'Life is too short, you need Python!'
- >>> type(raw_input('input something:'))
- input something:asdf
- <type 'str'>
- >>> type(raw_input('input something:'))
- input something:123
- <type 'str'>
A:你看到了,raw_input不论你输入什么都会返回str类型,这也是为什么叫做raw_input的原因。
- >>> type(input('input sth:'))
- input sth:123
- <type 'int'>
- >>> type(input('input sth:'))
- input sth:asdf
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "<string>", line 1, in <module>
- NameError: name 'asdf' is not defined
- >>> type(input('input sth:'))
- input sth:varA
- <type 'str'>
- >>> input('sth:')
- sth:varA
- 'Life is too short, you need Python!'
- >>> input('try some input like your code:')
- try some input like your code:[1, 'two', 3.0]
- [1, 'two', 3.0]
- >>> input('try again:')
- try again:'Oh!!!'
- 'Oh!!!'
Python 数据类型和控制结构的更多相关文章
- Python 30分钟入门——数据类型 and 控制结构
Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,如果你是在Windows上学习Pytho ...
- Python 30分钟入门——数据类型 & 控制结构
Python是一门脚本语言,我也久闻大名,但正真系统的接触学习是在去年(2013)年底到今年(2014)年初的时候.不得不说的是Python的官方文档相当齐全,假设你是在Windows上学习Pytho ...
- Python学习笔记(四)Python程序的控制结构
在学习了 Python 的基本数据类型后,我们就要开始接触Python程序的控制结构,了解 Python 是如何使用控制结构来更改程序的执行顺序以满足多样的功能需求.如果有的小伙伴在之前学过C语言,j ...
- python 数据类型---布尔型& 字符串
python数据类型-----布尔型 真或假=>1或0 >>> 1==True True >>> 0==False True python 数据类型----- ...
- Python 数据类型及其用法
本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组 ...
- day01-day04总结- Python 数据类型及其用法
Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...
- Python数据类型及其方法详解
Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...
- Python学习笔记(五)--Python数据类型-数字及字符串
Python数据类型:123和'123'一样吗?>>> 123=='123'False>>> type(123)<type 'int'>>> ...
- python数据类型之元组、字典、集合
python数据类型元组.字典.集合 元组 python的元组与列表类似,不同的是元组是不可变的数据类型.元组使用小括号,列表使用方括号.当元组里只有一个元素是必须要加逗号: >>> ...
随机推荐
- Java下载HTTP URL链接示例
这里以下载迅雷U享版为例. 示例代码: package com.zifeiy.snowflake.handle.filesget; import java.io.File; import java.i ...
- Spring Boot使用监听器Listener
之前介绍了在Spring Boot中使用过滤器:https://www.cnblogs.com/zifeiy/p/9911056.html 接下来介绍使用监听器Listener. 下面是一个例子: p ...
- 【c# 学习笔记】为什么要使用委托
上一章中我们可能会很疑惑,为什么需要委托?为什么不直接在MyMethod方法里直接调用Add方法,反而要实例化一个委托对象来完成调用呢?这岂不是自找麻烦吗? 当然,c#引入委托并不是自找麻烦.委托是c ...
- Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境部署】
1.环境说明: 系统版本:Ubuntu 14.04 LVS1物理IP:14.17.64.2 初始接管VIP:14.17.64.13 LVS2物理IP:14.17.64.3 初始接管VIP:14 ...
- 做了一个非竞价排名、有较详细信息的程序员职位 match 网站
作为一个程序员,每次看机会当我去 BOSS 直聘 或者拉勾网进行搜索时,返回的顺序并不是根据匹配程度,而是这些公司给 BOSS 直聘或者拉勾网付了多少钱.这种百度式的竞价排名机制并没有把我做为求职者的 ...
- 【VS开发】【数据库开发】windows下libevent x64库静态编译
按照libevent的文档,使用VC的nmake -f Makefile.nmake即可编译32位release模式.因为项目中要求编译64位的版本,需要在Makefile.nmake中添加一个LIB ...
- windows下进程与线程
windows下进程与线程 Windows是一个单用户多任务的操作系统,同一时间可有多个进程在执行.进程是应用程序的运行实例,可以理解为应用程序的一次动态执行:而线程是CPU调度的单位,是进程的一个执 ...
- DDS工作原理及其性能分析
DDS工作原理及其性能分析 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路设计等硬件方面的 ...
- opencv根据摄像头名称获取索引值
OpenCV的VideoCapture是一个视频读取与解码的API接口,支持各种视频格式.网络视频流.摄像头读取. 针对一般摄像头的读取,opencv为了实现跨平台读取摄像头时是使用的摄像头索引, V ...
- 学习笔记:oracle学习一:oracle11g体系结构之物理存储结构
目录 1.物理存储结构 1.1 数据文件 1.2 控制文件 1.3 日志文件 1.3.1 重做日志文件 1.3.2 归档日志文件 1.4 服务器参数文件 1.4.1 查看服务器参数 1.4.2 修改服 ...