python基础(01)——变量和数据类型
1.Python语言类型
Python是一种弱类型编程语言,与其他语言不同,Python没有声明变量的命令。在首次为其赋值时,才会创建变量。弱类型语言也就是说在编写代码的时候我们呢不需要提前给变量声明类型就可以给变量赋值。同时,变量的数据类型可以动态的改变,对同一个变量可以进行多次不同类型的赋值。(C、C++、Java都是强类型语言,对变量进行赋值时需要声明数据类型,如C中 :int number = 10;char str[] = ‘这是字符串类型’ )
a=123
print(a,type(a)) #type是数据类型
a="text"
print(a,type(a))
#输出的结果
# 123 <class 'int'>
# text <class 'str'>
从上面给的代码中我们可以看出,对变量进行赋值时无需声明数据类型。在对同一个变量赋值不同的数据类型时,该变量本身的数据类型也发生改变。
2.Python变量
2.1命名规则
1.变量只能由字母、数字、下划线(英文下划线_)组成;
2.变量名必须已字母或下划线字符开头;
3.变量名不可以以数字开头;
4.变量名区分大小写;
在对变量进行命名时,可以分开单独命名,也可在一行中多个变量赋值,也可一行中多个变量分配相同的值。
fruit = 'apple'
fruit1,fruit2 = 'orange','banana'
fruit3 = fruit4 = 'puple'
print(fruit,fruit1,fruit2,fruit3,fruit4) #输出:apple orange banana puple puple
另外不推荐使用中文作文变量名,Python中的关键字和内置函数不可以将其定义为变量名,程序会报错
#查看关键字
import keyword
print(keyword.kwlist)
#运行结果
# ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.2全局变量和global关键字
定义在全局中的变量是全局变量,使用global关键字定义在函数中的变量也可以作为全局变量,在函数内不适用global定义的变量为本函数内的变量,不是全局变量。
x = "全局变量"
print(x) #输出x="awsome"是全局变量
def myfunction1():
global x #global在函数内部定义全局变量x,若修改x的值,则全局的变量x将会被修改
x = "myfunction1函数内部修改后的全局变量"
print(x) #定义的全局变量将原来的值x覆盖掉了,输出的覆盖后的值
myfunction1()
def myfunction2():
x = 'myfunction2函数内的局部变量' #没有global。
print(x) #输出的是本函数内的x值
myfunction2()
输出结果:
全局变量
myfunction1函数内部修改后的全局变量
myfunction2函数内的局部变量
2.3变量运算
变量可以简单的做加减运算。字符串变量可相互相加,将两个字符连起来;对于数字,相加作为简单的数学加法运算。对于字符串和数字相加,程序会报**unsupported operand type(s) for +: ‘int’ and ‘str’**错误。
x,y = 1,2
print(x+y) #输出3
x,y = 'I am ','LiMing'
print(x+y) #输出I am LiMing
2.4 变量的内存管理
在python中程序运行当中产生的变量会存放在内存中,对于内存中引用计数为0的变量值为垃圾,内存中的垃圾管理机制会删除这些垃圾。对于变量的引用计数的理解可以用以下代码解释。
将变量值发生改变时,变量名会指向新值所在的地址。有可能会使得原来变量值的引用计数为0,产生垃圾。
name = "Jing" # "Jing"引用计数为1
name1 = name # "Jing"引用计数为2
name2 = name # "Jing"引用计数为3
# 用id方法可以看出三个变量指向的是一个地址
print(id(name)) # 2406727099248
print(id(name1)) # 2406727099248
print(id(name2)) # 2406727099248
del name # 删除name,name的引用计数为2
del name1 # 删除name1,name的引用计数为1
print(name2)
name2 = "Tian" # name2指定了"Tian","Jing"引用计数为0,垃圾回收机制会自动删除这类的值
print(id(name2)) # 2406727433264 name2修改其值时,其实是将name2指向了别的值,所以地址也会改变
3.数据类型
内置数据类型是Python中本身自己设定规则的数据类型,可以拿来直接用。
文本类型: | str |
---|---|
数值类型: | int,float,complex(整型,浮点型,复合型) |
序列类型: | list,tuple,range |
映射类型: | dict(键值对) |
集合类型: | set,frozenset |
布尔类型: | bool |
二进制类型: | bytes,bytearray,memoryview |