Python教程

Python语法入门

本文主要是介绍Python语法入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

变量

什么是变量

量: 事物的状态
变: 事物的状态是可以发生变化的

变量就是可以变化的量,量指的是事物的状态

比如说人的年纪、性别,游戏角色的等级、金钱等等

变量是一种机制,什么机制呢?
	变量是一种存取内存的机制。
	这种机制/语法可以把事物的状态记录下来,并且以后可以取出来改变。

为什么要有变量?

	为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的。

怎么用变量

原则:先定义,后引用
定义的语法:变量名 = 变量值
三大组成:
age(变量名) = (赋值符号) 18 (变量值)

补充:
左值:变量名如果在等号的左边,是存值  
右值:变量名不在等号左边,是取值

变量名: 用来访问变量值
赋值符号:将变量值的内存地址绑定给变量名
变量值: 就是我们记录的事物的状态,也就是存到内存中数据
错误补充:

程序出错有两种:
1)、语法错误(syntaxError):不允许犯语法错误,必须在程序运行前改正======> 直接报错
prit(“hello1”)
print(“hello2”)
print(“hello3”
print(“hello4”)
print(“hello5”)

2)、逻辑错误:逻辑上的错误只能在程序运行前被Python解释器发现,应该尽量把逻辑写到完美======>运行前2行,第三行报错
print(“hello1”)
print(“hello2”)
print(age)
age = 18
print(“hello4”)
print(“hello5”)

变量大原则:见名知意

变量名的命名规范:

  1. 变量名只能是字母、数字或下划线的任意组合
  2. 变量名不能是数字开头
  3. 不能使用Python关键字。

变量名的命名风格
风格一:驼峰体
AgeOfTony = 56
单词首字母大写
NumberOfStudents = 80

风格二:纯小写字母加下划线(在Python中,变量名的命名推荐该方式)
age_of_tony = 56
单词之间加_
number_of_students = 80

补充:age 不加引号是一个变量名,代表的是取值行为

“age”  加上引号是一种变量值

变量值的两大特性

id身份 作用是间接查看内存地址
x = age
print(id(age))
print(id(x))

type作用是查看数据类型
print(type(age))
value
反映的是变量在内存中的唯一编号,内存地址不同id肯定不同

is 与 ==

is:比较左右两个值身份id是否相等
==: 比较左右两个值它们的值是否相等

id不同的情况下,值有可能相同,即两块不同的内存空间里可以存相同的值

id相同的情况下,值一定相同,x is y成立,x == y也必然成立
常量
不能被改变的量,用全大写字母写,Python中是变量表示常量
AGE = 18
AGE = 19
print(AGE)

变量的三要素

  1. 变量的值
  2. 变量的内存地址
  3. 变量的数据类型
    name = “zzz”
    print(name) # 值
    print(name) # 一串数字 相当于是内存地址编号
    print(type(name)) # 数据类型 <class ‘str’>

Python底层优化

当值数据量很小的时候,如果有多个变量名需要使用,那么会指向同一块地址
一个变量名只能指向一个内存地址
一个内存地址可以有多个变量名指向

内存管理机制 ———垃圾回收机制GC

什么是垃圾回收机制

垃圾回收机制(GC)Python解释器自带一种机,专门用来回收不可用的变量值所占用的内存空间

为什么要有垃圾回收机制

垃圾:当一个变更值被绑定的变量名的个数为0时,该变量值无法被访问到,称之为垃圾

程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存时一件重要且繁杂的事情,而Python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来。

1.引用计数

当引用计数为0的时候,就是垃圾,Python解释器会帮着把垃圾清除
1) 引用计数增加
x = 18 18的引用计数次数为1
y = x 18的引用计数次数为2
l1=[111,x] 18的引用计数次数为3
print(id(x))
print(id(y))
print(id(l[1]))
2) 引用计数减少
del x # 接触绑定x,值18的引用计数为2
y = 100 # 值18的引用计数为1
del l[1] # 值18的引用计数为0

2. 分代回收

随着检测所有内存,有的位置得到更多的信任,不会每次被检查,能解决引用计数的效率问题
分代回收可以解决引用计数的效率问题
		问题:个别垃圾有可能得不到及时的清理

3. 标记/清除

	为了解决循环引用带来的内存泄露问题	
	核心:一个变量值如果没有任意一条从栈区到自己的引用,就会被标记下来,方便后续清除。
	lll = [66,77]
	l1 = [111]
	l2 = [222]
	l2.append(l1)
	l1.append(l2)
	print(l1)		# l1 = [111的内存地址,l2的内存地址]
	print(l2)		# l2 = [222的内存地址,l1的内存地址]
	print(l1[1][1])

小整数池[-5,256]

	Python解释器启动那一刻开始,就会在内存中事先申请好一系列内存空间内存好常用的整数
	二 小整数池
	x = 100000
	y = 100000
	
	x = "abc"
	y = "abc"
	print(id(x))
	print(id(y))

定义一个变量x = 10,在内存中的栈区域堆区的存放情况

栈区:存放是变量名与内存地址的对应关系,所以可以简单理解为:变量名存内存地址
堆区:存放的是变量值

直接引用与间接引用
		直接引用指的是从栈区出发直接引用到的内存地址
		间接引用指的是从栈区出发引用到的栈区后,在通过进一步引用才能到的内存地址
这篇关于Python语法入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!