python学习-数据类型
计算机处理的数据不单纯的指数字,计算机可以处理数字、文本、音频、视频等等各种数据,下面描述的是Python中可以直接使用和处理的基本数据类型。
整数
Python可以处理任意大小的整数,跟java等语言整数区分int和long不一样,Python的整数就一种,可以是无限大小的正整数或者负整数。例如十进制就是5、1983、-26等,16进制使用0x前缀,例如0xfa98、0xb123等
浮点数
浮点数也就是日常中常说的小数,只是因为使用科学计数法时小数点可以在任意位置,所以称浮点数更合适,浮点数写法也跟数学中一样,如1.85、-6.8,用科学计数法是10用e代替,如1.82x10^5就的写法就是1.82e5
浮点数的计算结果有时候是不精确的,有时候获得的结果是四舍五入之后的。
跟java相比不太一样的地方,java中整数之间做/运算是取整的意思,也就是所谓的地板除法。Python中提供了两个除法符号 / 和 // , / 的结果永远是浮点数(即使能够整除), // 的结果是取整,永远是整数,取余用%
>>> 9/3 3.0 >>> 10/3 3.3333333333333335 >>> 10//3 3 >>> 10%3 1
字符串
字符串可以理解为一段文本,用单引号或双引号括起来,例如'asdf'和"asdf"表示的字符串内容是一样的,这种只有单引号或双引号一种的,引号不包含在字符串中,如果字符串中包含单引号或双引号,可以嵌套使用,例如
>>> print("I'am victor") I'am victor >>> print('I"am victor') I"am victor
或者使用转义字符,转义字符可以转义很多,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,例如
>>> print("I'am \"victor\"") I'am "victor" >>> print("I'am \"victor\" \n I'am leaning Python \\\\") I'am "victor" I'am leaning Python \\
使用过多的转移字符看起来很乱,Python还提供了一个渐变方法,在字符串前面加上 r 字符串就不会转义了
>>> print("I'am \"victor\"") I'am "victor" >>> print(r"I'am \"victor\"") I'am \"victor\"
还允许使用三个单引号或双引号直接将多行字符串原样输出,但是转义字符还是会转义,不想转义前面还是要加上r,'''XXX''' """XXX""",例如
>>> print("""I'am \"victor\" ... I am ... leaning ... Python""") I'am "victor" I am leaning Python
布尔值
布尔值只有True和False两个值,注意区分大小写
>>> (1==2)==True False
布尔值可以用and、or和not运算,这个运算规则跟其他语言一样,and运算是与运算,只有所有都为True,and运算结果才是True。or运算是或运算,只要其中有一个为True,or运算结果就是True。not运算是非运算,它是一个单目运算符,把True变成False,False变成True
>>> True and False False >>> True or False True >>> not True False
空值
Python中的空值用None表示,注意大小写,空值不是0也不是"",这种有意义的值并不是None,None是一个特殊的空值,含义跟java中的null一样
>>> 0 == None False >>> >>> "" == None False
变量
变量在程序中就是用一个变量名表示,变量名必须是大小写字母、数字和_的组合,且不能用数字开头,变量用=赋值,注意一点Python是动态语言,跟java这类静态语言不太一样的地方就是动态语言更灵活,同一个变量可以赋值不同类型的值。
a = 2 print(a) a = "abC" print(a) #这个代码java会报错,因为两次赋值类型不一样,Python会正常执行后输出 2 abC
解释一下赋值过程,先猜猜下面的代码,输出的a和b值是什么?
a = "abc" b = a a = "def" print("a =", a) print("b =", b)
代码执行后的输出结果是a = def b = abc ,相信大部分人都能答对,下面简单介绍一下执行过程,第一行的时候解释器在内存分配了一个区域保存"abc"这个值,并把a这个变量指向"abc"所在的内存地址。第二行创建了一个变量b,并将a指向的地址赋给b,这样b也是指向了"abc"所在的内存地址。第三行又创建了一个"def"的内存区域,将a指向了"def"所在的内存地址,而这时b的指向并没有变化,所以执行后会输出这样的结果。
常量
常量就是固定不变的数据,约定俗成常量名全部大写,这个不变是从业务上定义的不变,例如圆周率PI = 3.1415926,当然你一定要在代码中改变PI的值,也没人拦得住你。