变量就是⼀个存储数据的时候当前数据所在的内存地址的名字⽽已。
变量名 = 值
- 在内存中创建一个变量,会包括:
- 变量的名称
- 变量保存的数据
- 变量存储数据的类型
- 变量的地址(标示)
注:
=
的左右应该各保留一个空格# 1. 定义苹果的单价
price = 8.5
# 2. 挑选苹果
weight = 7.5
# 3. 计算付款金额
money = weight * price
# 4. 只要买苹果,就返回 5 块钱
money = money - 5
print(money)
标示符就是程序员定义的 变量名、函数名
- 名字 需要有 见名知义 的效果
- 标示符可以由 字母、下划线 和 数字 组成
- 不能以数字开头
- 不能与关键字重名
Python
中的 标识符 是 区分大小写的
命名习惯:
1、见名知义
2、驼峰命名法
- 当 变量名 是由二个或多个单词组成时,可以利用驼峰命名法来命名
- 小驼峰式命名法
- 第一个单词以小写字母开始,后续单词的首字母大写
- 例如:
firstName
、lastName
- 大驼峰式命名法
- 每一个单词的首字母都采用大写字母
- 例如:
FirstName
、LastName
、CamelCase
3、下划线
在
Python
中,如果 变量名 需要由 两个 或 多个单词 组成时,可以按照以下方式命名
- 每个单词都使用小写字母
- 单词与单词之间使用
_
下划线 连接- 例如:
first_name
、last_name
、qq_number
、qq_password
关键字 就是在 Python
内部已经使用的标识符
通过以下命令可以查看 Python
中的关键字
In [1]: import keyword
In [2]: print(keyword.kwlist)
python中变量是不需要指定类型的,Python
可以根据等号右侧的值,自动推导出变量中存储数据的类型
Python3 基本数据类型 | 菜鸟教程
int 整形 3
float 浮点型 3.14
complex 复数类型 3+2j(可以没有前面实部,但是必须有复数的虚部)
Python3 数字(Number) | 菜鸟教程
bool 布尔类型 首字母大写,注意不能用引号引起来,通常用于条件判断
- True 非0数字
- False 数字0
True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
False
>>> 0 is False
False
str 字符串 'tom' "tom" '''tom''' """tom"""
bytes 字节序列 b'hello'
在 Python 中,字符串之间可以使用 +
拼接生成新的字符串
In [1]: first_name = "三"
In [2]: last_name = "张"
In [3]: first_name + last_name
Out[3]: '三张'
字符串变量 可以和 整数 使用 *
重复拼接相同的字符串
In [1]: "-" * 50
Out[1]: '--------------------------------------------------'
详细参考另外一篇博客
Python之高级变量类型_one ²⁰¹⁹的博客-CSDN博客
list 列表 [1,2.0,False,'tom'] tuple 元组 (1,2.0,False,'tom') dict 字典 {'name':'tom','age':'29'},元组由键(key)和值(value)构成的键值对 set 集合 {11,22,33,11} 无序,创建空集合 set()
None 代表具体类型待定, 或者说不确定具体类型
序列(sequence):str、bytes、list、tuple 整形、浮点型、布尔类型没有长度 print(len({})) print(len(9))
基础数据类型
# coding:utf-8
字符串 = ""
布尔型 = True
整数 = 1
浮点数 = 0.1
if __name__ == '__main__':
print(type(字符串))
print(type(布尔型))
print(type(整数))
print(type(浮点数))
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 "john" 分配给变量 c
不可变类型,内存中的数据不允许被修改:
- 数字类型
int
,bool
,float
,complex
,long(2.x)
- 字符串
str
- 元组
tuple
可变类型,内存中的数据可以被修改:
- 列表
list
- 字典
dict
注意
- 可变类型的数据变化,是通过 方法 来实现的
- 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改
- 变量 不再 对之前的数据引用
- 变量 改为 对新赋值的数据引用
a = 1
a = "hello"
a = [1, 2, 3]
a = [3, 2, 1]
demo_list = [1, 2, 3]
print("定义列表后的内存地址 %d" % id(demo_list))
demo_list.append(999)
demo_list.pop(0)
demo_list.remove(2)
demo_list[0] = 10
print("修改数据后的内存地址 %d" % id(demo_list))
demo_dict = {"name": "小明"}
print("定义字典后的内存地址 %d" % id(demo_dict))
demo_dict["age"] = 18
demo_dict.pop("name")
demo_dict["name"] = "老王"
print("修改数据后的内存地址 %d" % id(demo_dict))
(hash)
Python
中内置有一个名字叫做hash(o)
的函数;
- 接收一个 不可变类型 的数据作为 参数
- 返回 结果是一个 整数
哈希
是一种 算法,其作用就是提取数据的 特征码(指纹)
- 相同的内容 得到 相同的结果
- 不同的内容 得到 不同的结果
- 在
Python
中,设置字典的 键值对 时,会首先对key
进行hash
已决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查
- 键值对的
key
必须是不可变类型数据- 键值对的
value
可以是任意类型的数据
局部变量是在函数内部 定义的变量,只能在函数内部使用;不同的函数,可以定义相同的名字的局部变量,但是彼此之间不会产生影响
def demo1():
num = 10
print(num)
num = 20
print("修改后 %d" % num)
def demo2():
num = 100
print(num)
demo1()
demo2()
print("over")
局部变量的生命周期:
- 所谓生命周期就是变量从被创建到被系统回收的过程;
- 局部变量 在 函数执行时 才会被创建;
- 函数执行结束后 局部变量 被系统回
局部变量的作用:
- 在函数内部使用,临时保存函数内部需要使用的数据
全局变量是在函数外部定义 的变量,所有函数内部都可以使用这个变量
注:
函数执行时,需要处理变量时会:
- 首先 查找 函数内部 是否存在 指定名称 的局部变量,如果有,直接使用
- 如果没有,查找 函数外部 是否存在 指定名称 的全局变量,如果有,直接使用
- 如果还没有,程序报错!
不允许直接修改全局变量的引用:
- 使用赋值语句修改全局变量的值,只是定义了一个局部变量,不会修改到全局变量,只是变量名相同而已
- 如果在函数中需要修改全局变量,需要使用
global
进行声明全局变量定义的位置:
- 为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方