Python变量&变量类型

定义:

变量就是⼀个存储数据的时候当前数据所在的内存地址的名字⽽已。

变量名 = 值

  • 在内存中创建一个变量,会包括:
    1. 变量的名称
    2. 变量保存的数据
    3. 变量存储数据的类型
    4. 变量的地址(标示)

注:

  • 变量名 只有在 第一次出现 才是 定义变量
  • 变量名 再次出现,不是定义变量,而是直接使用之前定义过的变量
  • 在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格
# 1. 定义苹果的单价
price = 8.5
# 2. 挑选苹果
weight = 7.5
# 3. 计算付款金额
money = weight * price
# 4. 只要买苹果,就返回 5 块钱
money = money - 5
print(money)

变量的命名 

标识符

标示符就是程序员定义的 变量名函数名

  • 名字 需要有 见名知义 的效果
  • 标示符可以由 字母下划线 和 数字 组成
  • 不能以数字开头
  • 不能与关键字重名
  • Python 中的 标识符 是 区分大小写的

命名习惯:

1、见名知义

2、驼峰命名法

  • 当 变量名 是由二个或多个单词组成时,可以利用驼峰命名法来命名
  • 小驼峰式命名法
    • 第一个单词以小写字母开始,后续单词的首字母大写
    • 例如:firstNamelastName
  • 大驼峰式命名法
    • 每一个单词的首字母都采用大写字母
    • 例如:FirstNameLastNameCamelCase

3、下划线

在 Python 中,如果 变量名 需要由 两个 或 多个单词 组成时,可以按照以下方式命名

  1. 每个单词都使用小写字母
  2. 单词与单词之间使用 _下划线 连接
  3. 例如:first_namelast_nameqq_numberqq_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

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

可变和不可变类型  

不可变类型,内存中的数据不允许被修改:

  • 数字类型 intboolfloatcomplexlong(2.x)
  • 字符串 str
  • 元组 tuple

可变类型,内存中的数据可以被修改:

  • 列表 list
  • 字典 dict

注意

  1. 可变类型的数据变化,是通过 方法 来实现的
  2. 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改
    • 变量 不再 对之前的数据引用
    • 变量 改为 对新赋值的数据引用
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")

局部变量的生命周期:

  • 所谓生命周期就是变量从被创建到被系统回收的过程;
  • 局部变量 在 函数执行时 才会被创建;
  • 函数执行结束后 局部变量 被系统回

局部变量的作用:

  • 在函数内部使用,临时保存函数内部需要使用的数据

全局变量

全局变量是在函数外部定义 的变量,所有函数内部都可以使用这个变量

注:

函数执行时,需要处理变量时会:

  1. 首先 查找 函数内部 是否存在 指定名称 的局部变量,如果有,直接使用
  2. 如果没有,查找 函数外部 是否存在 指定名称 的全局变量,如果有,直接使用
  3. 如果还没有,程序报错!

不允许直接修改全局变量的引用:

  1. 使用赋值语句修改全局变量的值,只是定义了一个局部变量,不会修改到全局变量,只是变量名相同而已
  2. 如果在函数中需要修改全局变量,需要使用 global 进行声明

全局变量定义的位置:

  • 为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方

 

你可能感兴趣的:(PYTHON,python,开发语言,numpy)