day03-变量,基本数据类型,基本运算符
今日内容:
程序 = 数据 + 功能
- 变量
- 基本数据类型
- 基本运算符
- 输入输出
- 相当于人类的耳朵眼睛..
- 流程控制之if判断
一. 变量
变量就是存取内存的地址
一.原则: 先定义,后赋值
1.1 定义
age = 18
三大组成部分:
变量名:根据内存地址找值
赋值符号:将变量值的内存地址绑定给变量名
变量值:就是我们存储的数据,或者说记录的事物的状态
1.2 引用
变量的引用python会自己根据你的内存地址给你返回值的本身
print(age)
二.变量名
命名的大前提:变量名的命名该见明知意
age = 18
level = 18
count = 18
命名的规范:
1.是由字母,数字,下划线组成
2.不能以数字开头
3.不能使用python的关键字
level_of_jkey = 18
_ = 18
"_" 不要用于变量名的开头,它可以这样使用,但是不能达到见明知意
1.3 命名风格
1. 驼峰体
LevelOfJkey = 18
2.纯小写加下划线(推荐)
level_of_jkey = 18
三.变量值
3.1 变量值的俩大特征
age = 18
salary = 1.5
res = age + 1
=========> 类型
print(type(age)) #
print(type(salary))
=========> id:就是值在内存中的身份证号,id反应的就是内存
print(id(age))
print(id(salary))
is : 判断的是id是否相等
== : 判断的是值是否相等
注意:
如果id相等,证明就是同一个内存地址,值一定是相等的
如果值相等,他们的id不一定相等,还有可能是不同的内存地址存同样的值.
C:\Users\菩萨>python3
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
x = 1000
y = 1000
print(x is y)
False
print(x == y)
True
z = 120
c = z
print(z is c)
True
print(z == c)
True
小整数池:python解释器在启动的时候,会先将小整数的内存地址申请好,运行的时候就可以只有运用.不用再重新申请内存地址.
x = 100000
y = 100000
print(x == y, id(x))
print(x is y, id(y))
True 和 False , None 都是python解释器事先给你造好了的内存地址.他们的id都是一个.
x = True
y = 10 > 3
z = 10 < 3
id(x)
140703900600656
id(y)
140703900600656
id(z)
140703900600688
3.2 内存管理,垃圾回收机制gc
del 解绑 解除 变量名 和 内存地址 之间的绑定
核心原理:引用计数
x = 100 # 100 的引用计数为1
y = x # 100 的引用计数为2
y = 200 # 100 的引用计数为1
del x # 100 的引用计数为0 当 计数为0时,垃圾回收机制就会自动给你在内存空间中清除了.
1.4分代回收:
-根据引用的次数更改的多少来改变其权重,权重越高的回收的周期越短
- 作用可以提示效率
1.5标记清除: 循环引用导致内存泄漏问题
常量: 不能改变的量
- 比如重力加速度
在python中定义一个常量应该要用全大写大变量名.不用也不会报错,但是不符合你的代码规范
- AGE = 18
在 go 语言中就是在定义的时候用到关键字 const
- const age int = 18
二.基本数据类型
2.1 整型int
-
作用:形容年龄,个数,号码等
-
age = 18 age = int(18)
2.2 浮点型 float
-
作用:形容身高,体重,薪资.
-
salary = 1.5
2.3 字符串数据类型str
-
作用:描述性的内容,如姓名,性别,国籍,种族
-
msg1 = '这是一个宋海星说好,刘洋说不好的故事' msg2 = "这是一个宋海星说好,刘洋说不好的故事" msg3 = ''' 这是一个宋海星说好,刘洋说不好的故事 ''' msg4 = """ 这是一个宋海星说好,刘洋说不好的故事 """ print(type(msg4))
-
字符串不能存取多个数值,它只能存取一个整体.
2.4 列表类型 list
-
[]内用逗号分隔开多个任意类型的元素
-
作用:按照位置存放多个值,一般为同一种属性的值.
-
l = [111, 2.3, 'abc', [66, 77, 88]] 对应的索引值 0 1 2 3 取值的时候可以根据列表的索引去取对应的值 例:取到77这个值 ret = l[3][1]
-
将你的兴趣爱好存放到一个列表中
hobbies = ['read', 'music', 'movie', 'play']
2.5 字典类型dict
-
{}内用逗号分隔开的多个元素,每一个元素的组成都是key:value,其中的value类型可以是任意人性,而key通常都是字符串类型.
-
作用:按照key存放多个值,key反映的是value的属性.
-
d = {"k1": 111, "k2": 1.3, "k3": "abc", "k4": [1, 2, 3], 'k5': {"a": 1, "b": 2, "k5": 3}} print(d['k1']) print(d["k4"][1]) print(d['k5']["a"]) print(d['k5']["k5"])
-
用一种数据类型存一个人信息并取出其中的年龄
-
info = { 'name': 'JKey', "age": 18, "gender": 'male', "hobby": ['music', 'play', 'eat'] } print(info["age"])
-
存放多个同学的信息
student_info = [ {"name": 'JKey', "age": 18, "gender": 'male', "hobby": ['music', 'play', 'eat']}, {"name": 'liu', "age": 22, "gender": 'male', "hobby": ['music', 'play', 'eat']}, {"name": 'song', "age": 21, "gender": 'male', "hobby": ['music', 'play', 'eat']}, ]
2.6 布尔类型
-
作用:记录真假的俩种状态.
-
z = True c = False print(type(z)) # <class 'bool'> print(10 > 1) # True print(10 < 1) # False name = 'jkey' print(name == 'jkey') # True
三 基本运算符
3.1 算术运算符
算术运算符只能用来将同数据类型的进行计算
salary = 3.3
res = salary * 12
print(10 + 1) # 11
print(10 - 3) # 7
print(10 * 3) # 30
print(10 / 3) # 3.3333
print(10 // 3) # 只保留整数部分
print(10 % 3) # 取余数
print(10 ** 3) # 10的3次方
print(10 + 3.1) # 13.1
print(10 % 3.1) # 0.634
了解,"+" 和 "*" 也能用作于字符串和列表
+
print("abc" + "def")
print("abc" + 18)
*
print("abc"*3)
print("=====================")
print('hello world')
print("="*50)
print([1,2,3]+[3,4,5])
print([1,2,3]*3)
3.2 比较运算符
x = 10
y = 10.0
print(x == y)
m = 10
n = "10"
print(m == n)
print(10 == [1,2,3]) # == 不限类型
print(10 + [1,2,3])
print(10 == [1,2,3])
print(10 != [1,2,3])
print(10 > 3.1)
print(10 >= 3.1)
print(10 <= 3.1)
print(10 < 3.1)
注意: "==" 符号俩边可以是不同的数据类型
了解
msg1="hello"
msg2="hez"
print(msg1 > msg2)
l1=[11,"x","abc","ddd"]
l2=[11,22,'zz']
print(l1 > l2)