变量
在Python中,变量是用来存储数据的。它不需要像C语言中需要对变量的类型进行定义,Python会根据赋值自动确认变量的类型。
变量的命名规则 :
- 必须以字母或下划线开头。
- 只能包含数字、字母、下划线。
变量只是一个名称,用于与数据进行联系。
定义变量时,现在内存空间中申请一块地址用于存放数据。如果把这个地址比作房间,数据是房间中的东西,而变量名是房间号。
调用变量时,先通过变量找到房间(地址),再取出其中的东西(数据)。
可以通过id()
获取数据的地址,通过type()
获取数据的类型。
要注意的是:当相同的值赋给不同变量时,地址不同。例如 :a = 520 b = 520
这两个值的地址是不同的。但如果是a = b =520
a和b拥有相同的地址,相当于是将520
这个数据同时指向了a和b。
垃圾回收机制
这个机制的存在是为了自动管理内存,释放不在使用的对象所占用的空间。相较于C语言中使用free()
进行释放空间更加简便。
- 引用计数 :每个对象都有一个引用计数,当引用计数为 0 时,对象被回收。
- 标记 - 清除 :定期对对象进行标记,并清除那些不可达的对象。使用
del
,例如 :del a
。
一般在以下情况中会触发立即回收机制 :
- 当程序中分配的内存达到一定阈值时,会触发垃圾回收。
- 当执行某些特定操作时,如删除对象、退出程序等,也会触发垃圾回收。
小整数池
这是Python中的一个特性,是基于垃圾回收机制产生的,有助于减少内存消耗和提高性能,要注意的是在Python3中是只对范围在 [-5, 256] 之间的整数生效。但是在Pycharm中,对这个特性进行了拓展,只要是相同的数据都会使用相同的地址。
在 Python 中,为了避免频繁地创建和销毁小整数对象,提高内存利用效率,Python 内部维护了一个小整数池。
对于范围在 [-5, 256] 之间的整数,当你在程序中多次使用这些整数时,实际上是在复用同一个对象。这是因为 Python 在启动时就预先创建了这些小整数的对象,并将它们存储在小整数池中。
当你使用超出这个范围的整数时,每次都会创建新的对象。
函数
定义函数
Python中通过def
进行函数的定义。
def 函数名(参数列表):# 函数体语句
例如 :定义一个函数用于求1~n数字的和。
def sum(n):total = 0for i in range(1, n + 1):total += ireturn total
调用函数
Python中包含许多函数,执行dir(__builtins__)
可以查看Python中所有的内置函数。
输入输出函数
-
print()
输出括号中内容 -
input()
将键入的内容存入变量
类型转换函数 -
int()
将值转换成整数 -
str()
将值转换成浮点数 -
str()
将值转换成字符串 -
list()
、tuple()
、dict()
、set()
用来把其他类型的数据转换成列表、元组、字典和集合;或者创建空列表、空元组、空字典和空集合。 -
eval()
用来计算字符串或字节串的值;也可以用来实现类型转换的功能,如把字符串形式转换成列表、元组、字典、集合等。例如 :
>>> eval('3+5')
8
>>> eval('[1,2,3,4,5]')
[1, 2, 3, 4, 5]
>>> list('[1,2,3,4,5]')
['[', '1', ',', '2', ',', '3', ',', '4', ',', '5', ']']
- 内置函数
type()
和isinstance()
可以判断数据类型。 sorted()
对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表。例如 :
>>> x = ['aaaa', 'bc', 'd', 'b', 'ba']
>>> sorted(x, key=lambda item: (len(item), item))
#先按长度排序,长度一样的正常排序
['b', 'd', 'ba', 'bc', 'aaaa']
range()
语法格式为range([start,] end [, step] )
,返回具有惰性求值特点的range对象,其中包含左闭右开区间[start,end)内以step为步长的整数。参数start默认为0,step默认为1。
>>> range(5) #start默认为0,step默认为1
range(0, 5)
>>> list(_)
[0, 1, 2, 3, 4]
>>> list(range(1, 10, 2)) #指定起始值和步长
[1, 3, 5, 7, 9]
>>> list(range(9, 0, -2)) #步长为负数时,start应比end大
[9, 7, 5, 3, 1]
Python的内置函数还有许多。
关于函数的参数,Python与C语言几乎相同。
递归
也与C语言几乎相同。即在返回值中继续调用函数。
def sum(n) :if n == 1:return 1else :return n + sum(n - 1)