2021-06-25 Python(01)——变量和数据类型

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值