一章:Python基础语法(下)
Explicit is better than implicit. ——The Zen of Python
一、变量
1.1 理解Python中的变量
在Python中,变量严格意义上应该被称为“名字”,也可以理解为标签。当把一个值赋值给一个名字时(如把“这是Python”赋值给Python),Python就称为变量。
1.2 变量的定义和使用
在Python中,不需要先声明变名及其类型,直接赋值即可创建各种类型的变量,但是变量的命名不是任意的,应该遵守以下几条规则:
>> 变量名必须是一个有效的的标识符
>> 变量名不能使用Python的关键字
>> 慎用小写字母l和大写字母O(容易混淆)
>> 应该选择有意义的单词作为变量名。
为变量赋值可以通过等号(=)来实现,其语法格式为:
变量名 = Value;
例如,创建一个整型变量,并为其赋值为220,可以使用如下的语句:
number = 220 #创建变量并为其赋值为220
此外,Python是一种动态类型语言,即就是,变量的类型可以随时变化,例如在Python自带的IDLE中,创建变量myname,并为其赋值为“雨霓同学”,然后输出变量的类型,可以看到该变量为字符串类型,再将变量赋值为1210,并输出改变量的类型,可以看到该变量的类型为整型。示例如下:
myname = "雨霓同学" >>> print(type(myname)) <class 'str'> >>> myname = 1210 >>> print(type(myname)) <class 'int'>
在Python语言中,使用内置函数type( )可以返回变量的类型。
在Python中,允许多个变量指向同一个值。例如:将两个变量都赋值为1210,再分别应用内置函数id()获取变量的内存地址,得到相同的结果,示例如下:
>>> no = number = 1210 >>> id(no) 2284247074704 >>> id(number) 2284247074704
在Python语言中,使用内置函数id( )可以返回变量所指的内存地址。
常量:常量就是程序运行过程中,值不能改变的量,比如你的身份证号码,数学运算中的圆周率,这些都是不会改变的,在Python中,并未提供定义常量的保留字,在PEP8规范中规定了常量有大写字母和下划线组成,但是在实际项目中,常量被赋值后,依旧可以被其他代码修改。
二、变量的数据类型
在Python中,内存存储的数据可以有很多种类型。如一个人的姓名可以用字符型存储,年龄可以用数值型存储,是否结婚可以用布尔类型存储,这些都是Python中数据类型。Python3中包含6个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典).
2.1 数字类型(Number):
整型:整数用来表示整数数值,即没有小数部分的数值。整数类型包含十进制数、二进制数、八进制数、十六进制数.
十进制数:十进制整数的表现形式都很熟悉,如我们日常生活用的数字。十进制数不能以0作为开头,(0除外).
二进制数:只有0和1两个基数,进位规则是“逢二进一”,如101(转化为十进制数就是5)
八进制数:由0~7组成,进位规则是“逢八进一”,并且以0o开头的数字,如0o123(转化为十进制数为83),Py3中,八进制数必须以0o/0O开头.
十六进制数:由0~9,A~F组成,进位规则为“逢十六进一”,并且以0x/0X开头的数,如0x25(转换为十进制数为37),十六进制数必须以0X或0x开头.
浮点型:浮点数有整数部分和小数部分组成,主要用于出来包含小数的数。
复数:Python中的复数与数学中的复数形式完全一致,都是有实部和虚部组成,并使用j或者J表示虚部。
布尔类型:布尔类型主要用来表示真或假的值。在Python中,标识符(关键字)True 和 False被解释为布尔值,另外在Python中的布尔值可以转化为数值,其中True表示1,False表示0.
Python中的布尔类型的值可以进行数值运算,但是不建议对布尔类型的数值进行数值运算,此外在Python中,所有的对象都可以进行真值测试.其中只有 下面几种情况得到的值为假,其他对象在if或while语句中都表现为真。
>> False 或None
>> 数值中的零,包括0 、0.0 、虚数0。
>> 空序列,包含字符串,空元组,空列表,空字典。
>> 自定义对象的实例,该对象的__bool__返回False,或者__len__方法返回0。
2.2 字符串类型(String)
字符串就是连续的字符,在Python中字符串属于不可变序列,通常使用单引号“ ‘ ’ ”,双引号“ “ ” ”,或折三引号“ ''' ''' ”或“ """ """ ”表示,三种引号在语义上并无太大差别,只是在形式上有些差别,单引号和双引号的字符必须在一行上,而三引号内的字符序列可以分布在连续的多行上.
2.3 列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary)
列表和元组可以当做普通的“数组”,它们可以保存任意数量的的任意类型的值,而这些值简称为元素。列表中的元素使用中括号 [ ]包含,元素的个数和值是可以任意修改的,而元组中的元素使用小括号( )包含,元素不可被修改。示例如下:
list_name = [1,2,'你好 雨霓同学'] #这是一个列表 tuple_name = (1,2,'你好 雨霓同学') #这是一个元组 a,b= type(list_name),type(tuple_name) # 查看类型 print(a,b) <class 'list'> <class 'tuple'>
集合:集合(set)是0个或多个对象引用的无序组合,在集合中任何元素都没有重复,示例如下:
>>> nullset=set() #没有参数,set会创建一个空集 >>> nullset set() >>> a_set=set('abcdef') #提供一个str作为输入集合会创建一个set >>> a_set {'e', 'a', 'c', 'd', 'b', 'f'}
字典:字典是Python中的映射数据类型,由键-值对组成。字典可以存储不同类型的元素,元素使用花括号来包含。示例如下:
> dice_name = {'name':'雨霓同学','age':22} #这是一个字典 >>> type(dice_name) <class 'dict'>
2.4 常用数据类型转换
Python是动态类型的语言(也称弱类型语言,虽然不需要声明变量的类型,但有时仍需要用到类型转换)在Python中,提供了如下所示的函数,可以进行各个数据类型之间的转换
float(x): 将x转换为浮点数类型
complex(real,[,imag]): 创建一个复数
str(x): 将x转换为字符串
In [1]: x = 3.1415926 #输入一个浮点数x In [2]: x1 = int(x) # 将x转化为整型数 int(x):将x转换成整数类型 In [3]: type(x1) #查看x1的数值类型 Out[3]: int In [4]: x2 = float(x1) 将x1转化为浮点数 In [5]: type(x2) #查看x2的数值类型 Out[5]: float In [6]: x3=complex(220,284) #生成一个复数 In [7]: x3 Out[7]: (220+284j) In [8]: x4=str(x) #将x转化为字符串类型 In [9]: type(x4) Out[9]:str
repr( )函数 将对象转化为供解释器读取的形式,即转化为表达式字符串.
语法:repr(object)
参数:object--对象
返回值:返回一个对象的string格式.
>>> name = "雨霓同学" >>> repr(name) "'雨霓同学'" >>> dict = {'name':'雨霓同学','age':'22'} >>> repr(dict) "{'name': '雨霓同学', 'age': '22'}"
eval()函数 用来执行一个字符串表达式,并返回表达式的值。
语法:eval ( expression [ , globals [ , locals ] ] )
参数:expression--表达式.
globals--变量的作用域,全局命名空间,如果被提供,则必须是一个字典对象.
locals--变量的作用域,局部命名空间,如果被提供,可以是任何映射对象.
返回值:返回表达式的计算结果.
>>> x = 220 >>> eval('3*x') #计算字符串中Python表达式,并返回计算结果 660 >>> a = '284' #eval 方法能使字符串本身的引号去掉,保留字符的原本属性 >>> type(a) <class 'str'> >>> b=eval(a) >>> type(b) <class 'int'>
chr(x): 用一个整数作为参数,返回当前整数对应的ASCII码,其中x可以是十进制数也可以是十六进制数.数字范围为0-1,114,111.
>>> a,b,c=chr(97),chr(8364),chr(0x30) >>> a,b,c ('a', '€', '0')
ord(x): 将一个字符x转化为它对应的整数值,它是函数chr()匹配函数,以一个字符串作为参数,返回对应的ASCII数值,返回值是对应的十进制整数。
>>> a,b=ord('a'),ord('€') >>> a,b (97, 8364)
int(x): 用于将一个字符串或数字转化为整型,
语法格式:int(x,base=10)
参数:x--字符串或者数字,base--进制数,默认十进制。(第一个是要进行转化的数字,第二个用来说明前面一个数字是什么进制)
#分别把16进制的12转化为10进制,16进制的'0xa'转化为10进制,八进制的10转化为10进制,2进制的10转化为10进制 >>> a,b,c,d = int('12',16),int('0xa',16),int('10',8),int('10',2) >>> a,b,c,d (18, 10, 8, 2)
bin(x): 将一个整数x转化为一个二进制的字符串
oct(x): 将一个整数x转化为一个八进制的字符串
hex(x): 将一个整数x转化为一个十六制的字符串
#分别将10进制的220转化为2进制,284转化为8进制,1210转化为16进制 >>> a,b,c=bin(220),oct(284),hex(1210) >>> a,b,c ('0b11011100', '0o434', '0x4ba')
注意:在进行数据类型转换时,如果把一个非数字字符串转化为整型,则会报错,具体信息如下:
>>> int('22岁') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '22岁'