Python3_数据类型和变量

Python3_数据类型和变量

一、数据类型
Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
在Python中,能够直接处理的数据类型有以下几种:
1、整数
 Python中的整数类型与数学中的整数概念一致,它可正可负没有取值范围限制(只是理论上的无限,实际上机器内存有限,不可能无限大)。

  整数类型的四种表现方式:

    二进制:以0b或0B开头,例如0b010,-0B101

    八进制:以0o或0O开头,例如0o123,-0O456

    十进制:不做说明和演示

    十六进制:以0x或0X开头,例如0x9a,-0X89

2、浮点数
  Python中的浮点数与数学中的实数概念一致,它指的是带有小数点以及小数的数字。与整数不同,浮点数的取值范围和小数精度都存在限制,但常规计算时可以忽略。
 但是浮点数有一个特性需要特别注意:浮点数间运存存在不确定尾数,这不是BUG。这里举一个例子0.1+0.2应该得出的是0.3,但是Python计算出来的却不是0.3,如下:

>>> 0.1+0.2
0.30000000000000004
>>> 0.1+0.5
  Python浮点数可以使用字母e或E作为幂的符号,以10为基数的科学计数法,格式为<a>e<b>,表示a*10^b。例如96000,采用科学计数法就是9.6e4;0.0043,采用科学计数法就是4.3E-3。

3、复数类型

在众多的编程语言中,只有Python提供了复数类型,复数类型与数学中的复数概念一致。定义j2=-1,即j=√(-1),以此为基础构建的数学体系。a+bj被成称为复数,其中a为实部,bj整个是虚数部分,b为虚部。例如:z=1.23e-4+5.6e+89j,那么z就是一个复数类型,可以使用z.real获取实部1.23e-4,z.imag获取虚部5.6e+89。
 
4、字符串
字符串是以单引号’或双引号"括起来的任意文本,比如’123’,“qwe"等等。请注意,’'或”“本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c这3个字符。如果’本身也是一个字符,那就可以用”"括起来,比如"This’ me!"包含的字符是T,h,i,s,’,空格,m,e,这8个字符。
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识,比如:

"This’\"me\"!"

表示的字符串内容是This’“me”!

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:

> > a = "This’\"me\"!"
>> > print(a)
运行结果:
This’"me"!
>> > print('I\'m learning\nPython3。')
运行结果:
I'm learning
Python3。
>> > print('\\\n\\')
运行结果:
\
\

Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串::

>>> print(r'\\\\\\\n\\\\')
运行结果:
\\\\\\\n\\\\

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’'的格式表示多行内容,可以自己试试:


>>> print('''
 今天还挺忙
 云云说我没和她说早上好
 然后给我记了小本本''')

运行结果:
 今天还挺忙
 云云说我没和她说早上好
 然后给我记了小本本

5、布尔值
 布尔类型是一个非常特殊的类型,所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值。空对象,值为零的任何数字或者Null对象None的布尔值都是False。在Python3中True=1,False=0,可以和数字型进行运算。布尔值也可以通过布尔运算计算出来:

>>> True
True
>>> False
False
>>> 1<2
True
>>> 2<1
False

布尔值可以用and、or和not运算。
and运算是与运算,只有所有都为True,and运算结果才是True

>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> 5 > 6 and 32> 1
False

or运算是或运算,只要其中有一个为True,or运算结果就是True:

>>> True or True
True
>>> True or False
True
>>> False or False
False

not运算是非运算,它是一个单目运算符,把True变成False,False变成True:

>>> not True
False
>>> not False
True

布尔值经常用在条件判断中,比如:

age=11
if age >= 18:
    print('adult')
else:
    print('teenager')
运行结果:
teenager

6、空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
二、变量
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。,变量不仅可以是数字,还可以是任意数据类型。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:

a = 1
变量a是一个整数
a = '1'
变量1是一个字符串。
a = True
变量a是一个布尔值True。

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):

int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量

和静态语言相比,动态语言更灵活,就是这个原因。

赋值语句的等号不等同于数学的等号。比如下面的代码:

x = 1
x = x + 1

如果从数学上理解x = x + 1那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 1,得到结果2,再赋给变量x。由于x之前的值是1,重新赋值后,x的值变成2。

最后,理解变量在计算机内存中的表示也非常重要。当我们写:

a="qwe123"

时,Python解释器干了两件事情:

在内存中创建了一个’qwe123’的字符串;

在内存中创建了一个名为a的变量,并把它指向’qwe123’。

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

# -*- coding: utf-8 -*-
a= 'ABC'
b = a
a = 'XYZ'
print("a=",a,"b=",b)

运行结果:

a= XYZ b= ABC

最后一行打印出变量b的内容到底是’ABC’呢还是’def’?如果从数学意义上理解,就会错误地得出b和a相同,也应该是’def’,但实际上b的值是’ABC’一行一行分析下代码:

执行a = 'ABC',解释器创建了字符串'ABC'和变量a,并把a指向'ABC'

在这里插入图片描述

执行b = a,解释器创建了变量b,并把b指向a指向的字符串'ABC'

在这里插入图片描述

执行a = 'XYZ',解释器创建了字符串'XYZ',并把a的指向改为'XYZ',但b并没有更改:

在这里插入图片描述

最后,热爱网络安全与Python的朋友可以关注我的公众号。
在这里插入图片描述

posted @ 2022-11-21 21:20  那酒不要留  阅读(113)  评论(0编辑  收藏  举报
/* 雪花特效 */