Pyhton 变量

在 Python 中定义变量是 不需要指定类型
数据类型可以分位 数字型 和 非数字型

  • 数字型

    • 整型(int)
    • 浮点型(float)
    • 布尔型(bool)
      • 真 true 非 0 数 —— 非零即真
      • 假 False 0
    • 复数型(complex)
      • 主要用于科学计算
  • 非数字型

    • 字符串
    • 列表
    • 元组
    • 字典

注:使用 type函数可以查看一个变量的类型

  • 在Python 中,所有 非数字型变量 都支持以下特点:
  1. 都是一个序列sequence,
  2. 取值 []
  3. 遍历 for in
  4. 计算长度、最大/最小值、比较、删除
  5. 链接 + 和重复 *
  6. 切片

变量的引用

  • 变量和数据都是保存在内存中的
  • 在Python 中函数的参数传递 以及 返回值都是靠引用传递的

在Python中

  • 变量和数据 是分开存储的
  • 数据保存在内存中的一个位置
  • 变量中保存着数据在内存中的地址
  • 变量中记录数据的地址,就叫做引用
  • 使用 id() 函数可以查看变量中保存数据所在的 内存地址

注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

  • 变量 不再对之前的数据引用
  • 变量 改为 对新赋值的数据引用

示例:

def test(num):

    print("在函数内部 %d 对应的内存地址是 %d" % (num, id(num)))

    # 1> 定义一个字符串变量
    result = "vvcat"
    
    print("函数要返回数据的内存地址是 %d" % id(result))

    # 2> 将字符串变量返回,返回的是数据的引用,而不是数据本身
    return result

# 1. 定义一个数字的变量
a = 5

# 数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是 %d" % id(a))

# 2. 调用 test 函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据
r = test(a)
print("%s 的内存地址是 %d" % (r, id(r)))
可变和不可变类型
  • 不可变类型,内存中的数据不允许被修改:
    • 数字类型 int, bool, float, complex
    • 字符串 str
    • 元组 tuple
  • 可变类型,内存中的数据可以被修改:
    • 列表 list
    • 字典 dict

注:字典的 key 只能使用不可变类型的数据
1.可变类型的数据变化,是通过方法来实现的
2. 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改

  • 变量不再对之前的数据引用
  • 变量改为对新赋值的数据引用

示例:

# 列表
a = [1, 2, 3]
print(id(a))

a.append(567)
print(a)
print(id(a)) # 引用不发生改变

a.remove(3)
print(a)
print(id(a))  # 引用不发生改变

a.clear()
print(a)
print(id(a))  # 引用不发生改变

# 字典
d = {"name": "vvcat"}
print(d)

d["age"] = 15
print(d)
print(id(d))  # 引用不发生改变

d.pop("age")
print(d)
print(id(d))  # 引用不发生改变

d.clear()
print(d)
print(id(d))  # 引用不发生改变

d = {}   # 赋值了一个新的数据,引用会修改
print(id(d))
哈希(hash)
  • Python 中内置头一个名字叫做 hash(o)的函数
    • 接收一个 不可变类型的数据作为参数
    • 返回 结果是一个整数
  • 哈希是一种算法,其作用就是提取数据的特征码(指纹)
    • 相同的内容得到相同的结果
    • 不同的内容得到不同的结果
  • 在Python中,设置字典的键值对时,会首先对 key 进行 hash 已决定如何在内存中保存字典的数据,以方便后续对字典的操作:增、删、改、查
    • 键值对的 key 必须是不可变类型数据
    • 键值对的 value 可以是任意类型的数据

示例:

d = {}
d["name"] = "vvcat"
print(d)

d[1] = "整数"
print(d)

d[(1,)] = "元组"
print(d)

# TypeError: unhashable type: 'list'
# d[[1, 2, 3]] = "列表"
print(d)

# TypeError: unhashable type: 'dict'
# d[{"n": "xxx"}] = "字典"
# print(d)


print(hash(1))

print(hash("vvcat"))

print(hash("vvcat1"))

print(hash((1,)))

# TypeError: unhashable type: 'list'
# print(hash([]))

# TypeError: unhashable type: 'dict'
# print(hash({}))

不同类型变量之间的计算

1)数字型变量之间可以直接计算

  • 在Python中,两个数字型变量是可以直接进行 算数运算的
  • 如果变量是 bool 型,在计算时
    • True 对应的数字是 1
    • False 对应的数字是 0

整型 + 整型 = 整型
整型 + 布尔型 = 整型
整型 + 浮点型 = 浮点型
浮点型 + 浮点型 = 浮点型
浮点型 + 布尔型 = 浮点型
布尔型 + 布尔型 = 整型

2)字符串变量之间使用 + 拼接字符串

  • 在Python中,字符串之间可以使用 + 拼接生成新的字符串
    例如:
str1 = "Hello"
str2 = "World"
str1 + str2
'Hello World'

3)字符串变量 可以和 整数 使用 * 重复拼接相同的字符串

"-" * 10
'----------'

4)数字型变量 和 字符串 之间 不能进行其他计算

name = "vvcat"
x = 5
x + name

在这里插入图片描述
类型错误:“+” 不支持的操作类型:‘int’ 和 ‘str’

变量的输入

  • 在Python 中,如果要获取用户在键盘上的输入信息,需要输入信息,需要使用到 input 函数

注:用户输入的 任何内容 Pyhton 都认为是一个字符串

5)类型转换函数

函数说明
int(x)将 x 转换为一个整数
float(x)将 x 转换到一个浮点数

6)变量的格式化输出

  • %被称为 格式化操作符,专门用于处理字符串中的格式
    • 包含 % 的字符串,被称为 格式化字符串
    • % 和不同 字符连用,不同类型的数据需要使用不同的格式化字符
格式化字符含义
%s字符串
%d有符号十进制整数,%06d表示输出的整数显示位数,不足的地方使用0补全, 足够6位的显示原有的数字
%f浮点数,%.02f 表示小数点后只显示两位
%%输出%
  • 语法格式如下:
print("格式化字符串" % 变量1)
print("格式化字符串" % (变量1, 变量2...))

例如:


name = "vvcat"
print("我的名字叫 %s, 请多多关照!" % name)

# 不足6位的前面 补0,足够6位的显示原有的数字
student_no = 30
print("我的学号是  %06d" % student_no)

price = 11.2
weight = 5
money = price * weight
print("苹果单价 %.2f 元 / 斤, 购买 %.02f斤, 需要支付 %.02f 元" % (price, weight, money))

scale = 0.25
print("数据比例是 %.02f%%" % (scale * 100))

在这里插入图片描述


Python 关键字查看
通过以下代码可以查看 Python 中的关键字

import keyword
print(keyword.kwlist)

在这里插入图片描述

字符串中的转义字符

  • \t 在控制台输出一个 制表符,协助在输出文本时 垂直方向 保持对齐
  • \n 在控制台输出一个换行符

制表符的功能是在不使用表格的情况下在垂直方向 按列对齐文本

转义字符描述
\\反斜杠符号
\’单引号
\"双引号
\n换行
\t横向字符表
\r回车
列表
1.1 列表的定义
  • List (列表)是 Python 中使用最频繁的数据类型,在其他语言中通常叫做 数组
  • 专门用于存储一串信息
  • 列表用 [] 定义,数据之间使用,分隔
  • 列表的索引从0开始
    • 索引就是数据在列表中的位置编号,索引又可以被称为下标

注意:从列表中取值时,如果超出索引范围,程序会报错
在这里插入图片描述

1.2列表常用操作:
  • 在 python3中定义一个列表
    例如:
    str_list = []

  • 列表能够使用的方法如下:

序号分类关键字/函数/方法说明
1增加列表.insert(索引,数据)在指定位置插入数据
列表.append(数据)在末尾追加数据
列表.extend(列表2)将列表2 的数据追加到列表
2修改列表[索引] = 数据修改指定索引的数据
3删除del 列表[索引]删除指定索引的数据
列表.remove[数据]删除第一个出现的指定数据
列表.pop删除末尾数据
列表.pop(索引)删除指定索引数据
列表.clear清空列表
4统计len(列表)列表长度
列表.count(数据)数据在列表中出现的次数
5排序列表.sort()升序排序
列表.sort(reverse=True)降序排序
列表.reverse()逆序、反转

注:Python 的列表中可以 存储不同类型的数据

循环遍历
  • 遍历 就是 从头到尾依次 从 列表 中获取数据
    • 在循环体内部 针对 每一个元素,执行相同的操作
  • 在 Python 中为了提高列表的遍历效率,专门提供的 迭代遍历
  • 使用 for 就能够实现迭代遍历
# for 循环内部使用的变量 in 列表
for name in name_list:
	
	循环内部针对列表元素进行操作
	print(name)
for 变量 in 集合:
	
	循环体代码
else:
	没有通过break 退出循环,循环结束后,会执行的代码

例如:

for num in [1, 2, 3, 4, 5]:
    print(num)

    if num == 3:
        break
else:
    # 如果循环体内部使用 break 退出了循环
    # else 下方的代码就不会被执行
    print("else 下方的代码被执行了")

print("循环结束")
元组
2.1 元组的定义
  • Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改
    • 元组表示多个元素组成的序列
  • 用于存储 一串 信息,数据之间使用 ,分隔
  • 元组用()定义
  • 元组的索引从 0 开始
    • 索引就是数据在 元组 中的位置编号

创建空元组

tuple_info = ()

元组中只包含一个元素时,需要在元素后面添加逗号

tuple_info = (6, )

如果在定义元组变量时,元组只包含一个元素,没有添加逗号,会根据这个元素的类型,进行转换
例如:

single_tuple = (6)
print(type(single_tuple))  # 输出结果为 <class 'int'>
2.2 元组常用操作
  • 在 python3中定义一个元组
    例如:
    tuple_info = []

  • 列表能够使用的方法如下:

序号分类关键字/函数/方法说明
1查找元组.index(数据)根据已知元组的数据,查找该数据在元组中的索引
2统计len(元组)元组长度
元组.count(数据)数据在元组中出现的次数
2.3 循环遍历
# for 循环内部使用的变量 in 列表
for item in tuple_info:
	
	循环内部针对元组元素进行操作
	print(item )
  • 在Python中,可以使用 for 循环遍历所有非数字型类型的变量:列表、元组、字典、以及字符串。
2.4 元组在格式化字符串中的应用
  • 格式字符串,格式化字符串后面的()本质上就是一个元组
    例如:
info_tuple = ("vvcat", 12, 1.45)

# 格式化字符串后面的 '()' 本质上就是元组
print("%s 年龄是 %d 身高是 %.2f" % info_tuple)

info_str = "%s 年龄是 %d 身高是 %.2f" % info_tuple

print(info_str)
2.5 元组和列表之间的转换
  • 使用 list 函数可以把元组转换成列表
list(元组)
  • 使用 tuple 函数可以把列表转换成元组
tuple(列表)
字典
3.1 字典的定义
  • 字典是 除列表意外 Python之中最灵活的数据类型
  • 字典同样可以用来存储多个数据类型
    • 通常用于存储 描述一个 物体 的相关信息
  • 和列表的区别
    • 列表是有序的 对象集合
    • 字典是无序的对象集合
  • 字典用 {} 定义
  • 字典使用 键值对存储数据,键值对之间使用 ,分隔
    • 键 key 是索引
    • 值 value 是数据
    • 键 和 值 之间使用 :分隔
    • 键必须是唯一的
    • 值 可以取任何数据类型,但 键 只能使用 字符串、数字或元组
3.2 字典的增删改查
vvcat_dict = {"name": "vv"}

# 1. 取值
print(vvcat_dict["name"])
# 在取值的时候,如果指定的key不存在,程序会报错!
# print(vvcat_dict["name123"])

# 2. 增加/修改
# 如果Key不存在,会新增键值对
vvcat_dict["age"] = 18
# 如果Key存在,会修改已经存在的键值对
vvcat_dict["name"] = "vvcat"
print(vvcat_dict)

# 3.删除
vvcat_dict.pop("name")
# 在删除指定键值对的时候,如果指定的key不存在,程序会报错!
# vvcat_dict.pop("name123")

print(vvcat_dict)
3.3 字典常用操作
  • 在 python3中定义一个字典
    例如:
    dict_info = {}

  • 字典能够使用的方法如下:

序号分类关键字/函数/方法说明
1取值字典[key]可以从字典中取值, key 不存在会报错
字典.get(key)可以从字典中取值, key 不存在不会报错
2修改字典[key] = value如果 key 存在,修改数据; 如果 key 不存在,新建键值对
字典.setdefault(key, value)如果 Key 存在,不会修改数据; 如果 key 不存在,新建键值对
字典.update(字典2)将字典 2 的数据合并到字典1,如果字典2和字典1有重复的键值对,字典2的重复的键值对将会覆盖字典1的键值对
3删除del 字典[key]删除指定键值对, key 不存在会报错
字典.popitem()随机删除一个键值对
字典.pop(key)删除指定键值对,key 不存在会报错
字典.clear清空列表
4统计len(字典)获取字典的键值对数量
5查看字典.keys()所有 key 列表
字典.values()所有 value 列表
字典.items()所有 (key, value) 元组列表
3.4 循环遍历
  • 遍历就是依次从字典中获取所有键值对
vvcat_dict = {"name": "vvcat",
            "age": "18",
            "gender": "男"}

# 迭代遍历字典
# 变量k是每一次循环中,获取到的键值对的key
for k in vvcat_dict:
	print("%s- %s" % (k, vvcat_dict[k]))

将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理

# 使用 多个键值对,存储 描述一个 物体的相关信息——描述更复杂的数据信息
# 将 多个字典 放在 一个列表 中,再进行遍历
card_list = [
	        {"name": "vvcat",
			"age":  15,
			"gender": True,
			"height": 1.55,
			"weight": 55.5},
	        {"name": "vvcat",
			"age":  18,
			"gender": True,
			"height": 1.75,
			"weight": 75.5}
]

# 遍历列表
for card_info in card_list:
    print(card_info)

# 遍历列表中的字典
for card_info in card_list:
    print()
    for k in card_info:
    	print("%s- %s" % (k, card_info[k]))
  • 在 Python 中完整的for循环的语法如下:
for 变量 in 集合:
	
	循环体代码
else:
	没有通过break 退出循环,循环结束后,会执行的代码

示例:

students = [
    {"name": "张三"},
    {"name": "李四"}
]

# 在列表中搜索指定的姓名
find_name = "vvcat"

for stu_dict in students:

    print(stu_dict)

    if stu_dict["name"] == find_name:
        print("找到了 %s" % find_name)

        # 如果已经找到,应该直接退出循环,而不再变量后续的元素
        break
else:
    # 如果希望在搜索列表时,所有的字典检查之后,都没有发现需要搜索的目标
    # 还希望得到一个统一的提示!
    print("抱歉没有找到 %s" % find_name)

print("循环结束")
字符串
4.1 字符串的定义
  • 字符串就是一串字符,是编程语言中表示文本的数据类型
  • 在Python中可以使用 一对双引号 " 或者 一对单引号 ’ 定义一个字符串
    • 虽然可以使用 " 或者 ’ 做字符串的转义,但是在实际开发中:
      • 如果字符串内部㤇使用 " , 可以使用 ’ 定义字符串
      • 如果字符串内部㤇使用 ’ , 可以使用 " 定义字符串
  • 可以使用 索引获取一个字符串中 指定位置的字符,索引计数从 0 开始
  • 也可以使用 for 循环遍历字符串中每一个字符
string = "Hello World"

for s in string:
	print(s)
4.2 字符串的常用操作
  • 在 python3中定义一个字符串,
    例如:
    string = “”

  • 字符串能够使用的方法如下:

1)判断类型

方法说明
string.isspace()如果 string 中只包含空格,则返回 True
string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回True
string.isdecimal()如果 string 只包含数字则返回 True, 全角数字
string.isdigit()如果 string 只包含数字怎返回 True, 全角数字、(1)、\u00b2
string.isnumeric()如果 string 只包含数字则返回 True, 全角数字,汉字数字
string.istitle()如果 string 是标题化的(每个单词的首字母大写)则返回 True
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大写小的)字符都是大写,则返回 True,否则返回 False

2)查找和替换

方法说明
string.startswith(str)检查字符串是否是以 str 开头,是则返回True
string.endswith(str)检查字符串是否是以 str 结束,是则返回True
string.find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.rfind(str, start=0, end=len(string)类似于 find()函数, 不过是从右边开始查找
string.index(str, start=0, end=len(string))跟 find() 方法类似,只不过如果 str 不在 string 会报错
string.rindex(str, start=0, end=len(string))类似于 index(),不过是从右边开始
string.replace(old_str, new_str, num=string.count(old))把 string 中的 old_str, 如果 num 指定,则替换不超过 num 次

3)大小写转换

方法说明
string.capitalize()把字符串的第一个字符大写
string.title()把字符串的每个单词首字母大写
string.lower()转换 string 中所有大写字符为小写
string.upper()转换 string 中的小写字母为大写
string.swapcase()翻转 string 中的大小写

4)文本对齐

方法说明
string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

例如:

poem = ["落花",
        "李商隐",
        "高阁客竟去",
        "小园花乱飞",
        "参差连曲陌",
        "迢递送斜晖",
        "肠断未忍扫",
        "眼穿仍欲归",
        "芳心向春尽",
        "所得是沾衣"]

for poem_str in poem:
	print("|%s|" % poem_str.ljust(10, " "))
print("------------------------------")

for poem_str in poem:
	print("|%s|" % poem_str.rjust(10, " "))
print("------------------------------")

for poem_str in poem:
    print("|%s|" % poem_str.center(10, " "))

5)去除空白字符

方法说明
string.lstrip()截掉 string 左边(开始)的空白字符
string.rstrip()截掉 string 右边(末尾)的空白字符
string.strip()截掉 string 左右两边的空白字符

6)拆分和连接

方法说明
string.partition(str)把字符串 string 分成一个 3 元素的元组(str前面,str,str后面)
string.rpartition(str)类似于 partition()函数,不过是从右边开始查找
string.split(str="",num)以 str 为分隔符切片 string,如果num 有指定值,则仅分隔 num + 1个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格
string.splitlines()按照行(’\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表
string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

例如:

poem_str = "落花 \t 李商隐\t 高阁客竟去\t\n 小园花乱飞\t\t 参差连曲陌\t 迢递送斜晖\t\n 肠断未忍扫\t\t 眼穿仍欲归\t\t 芳心向春尽\t\t 所得是沾衣\t\n"

print(poem_str)

# 1. 拆分字符串
poem_list = poem_str.split()
print(poem_list)

# 2. 合并字符串
result = " ".join(poem_list)
print(result)
4.3 字符串的切片
  • 切片方法适用于字符串、列表、元组

    • 切片使用索引值 来限定范围,从一个大的字符串中切出小的字符串
    • 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
    • 字典是一个无序的集合,是使用键值对保存数据

    在这里插入图片描述

字符串[开始索引:结束索引:步长]

注意:

1.指定的区间属于 左闭右开 型 [开始索引,结束索引] → 开始索引 >= 范围 < 结束索引

  • 从 起始 位开始,到结束 位的前一位结束(不包含结束位本身)

2.从头开始,开始哟因 数字可以省略,冒号不能省略
3.到末尾结束,结束索引数字可以省略,冒号不能省略
4.步长默认为1,如果连续切片,数字和冒号都可以省略

例如:

num_str = "0123456789"
# 1.截取从 2 ~ 5位置的字符串
print(num_str[2:6])

# 2.截取从 2 ~ 末尾的字符串
print(num_str[2:])

# 3.截取从 开始 ~ 5 位置的字符串
print(num_str[0:6])
print(num_str[:6])

# 4.截取完整的字符串
print(num_str[:])

# 5.从开始位置,每隔一个字符截取字符串
print(num_str[::2])

# 6.从索引 1 开始,每隔一个字符截取字符串
print(num_str[1::2])

# 7.截取从 2 ~ 末尾 -1 的字符串
# print(num_str[-1])
print(num_str[2:-1])

# 8.截取字符串末尾两个字符
print(num_str[-2:])

# 9.字符串的逆序
# print(num_str[0::-1])
print(num_str[-1::-1])
print(num_str[::-1])

# 字符串逆序从索引 1 开始,每隔一个字符截取字符串
print(num_str[::-2])
5. 公共方法
5.1 Python 内置函数

Python 包含了以下内置函数:

函数描述备注
len(item)计算容器中元素个数
del(item)删除变量del有两种方式
max(item)返回容器中元素最大值如果是字典,只针对 key 比较
min(item)返回容器中元素最小值如果是字典,只针对 key 比较

注意

  • 字符串比较符合以下规则:“0” < “A” < “a”

例如:

# 删除变量
a = [1, 2, 3]
del a[1]
print(a)

del(a[1])
print(a)

del(a)
# print(a)

# 返回容器中元素最大值 最小值
t_str = "qwertyuiopasdfghjklzxcvbnm"
print(max(t_str))
print(min(t_str))

t_list = [5, 2, 4, 8, 1]
print(max(t_list))
print(min(t_list))

# 如果是字典,只针对 key 比较
t_dict = {"a": "z", "b" : "y", "c": "x"}
print(max(t_dict))
print(min(t_dict))

# 字符串比较符合以下规则:“0” < “A” < “a”
print("1" < "2")
print("1" > "2")
print("aaaa" < "bbbb")
print([1, 1, 1] < [2, 2, 2])
print((1, 1, 1) < (2, 2, 2))

#TypeError: '<' not supported between instances of 'dict' and 'dict'
print({"a": "z"} < {"b": "y"})
5.2 运算符
运算符Python 表达式结果描述支持的数据类型
+[1, 2] + [3, 4][1, 2, 3, 4]合并字符串、列表、元组
*[“Python”] * 5[“Python”, “Python”, “Python”, “Python”, “Python”]重复字符串、列表元组
in2 in (1, 2, 3, 4, 5)True元素是否存在字符串、列表、元组、字典
not in6 not in (1, 2, 3, 4, 5)True元素是否不存在字符串、列表、元组、字典
> >= == < <=(1, 2, 3) < (2, 2, 3)True元素比较字符串、列表、元组

注意:

  • in 在对字典 操作时,判断的是 字典的键
  • in 和 not in 被称为 成员运算符

例如:

print([1, 2] * 5)  # 输出结果:[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

print((1, 2) * 5)  # 输出结果:(1, 2, 1, 2, 1, 2, 1, 2, 1, 2)

# TypeError: unsupported operand type(s) for *: 'dict' and 'int'
# {"a" : "z"} * 3

print((1, 2) + (3, 4, 5))  # 输出结果: (1, 2, 3, 4, 5)

print([1, 2] + [3, 4] + [5,])  # 输出结果:[1, 2, 3, 4, 5]

t_list = [1, 2]

# 与 + 的区别,+ 会产生一个新的列表,而extend()方法会修改原有的列表
t_list.extend([3, 4])

print(t_list) # 输出结果:[1, 2, 3, 4]

t_list.append(0)
print(t_list)  # 输出结果:[1, 2, 3, 4, 0]

# append()方法把追加的列表元素看作是一个单独的元素,追加到原列表中
t_list.append([7, 8])
print(t_list)  # 输出结果: [1, 2, 3, 4, 0, [7, 8]]

成员运算符

成员运算符用于测试序列中是否包含指定的成员

运算符描述
in如果在指定的序列中找到值返回 True, 否则返回False
not in如果在指定的序列中没有找到值返回 True, 否则返回 False

注意:在对字典操作时,判断的是 字典的键
例如:

print("b" in "abcdefg")  # 结果返回 True

print("a" not in "abcde")  # 结果返回 False

print(2 in [0, 1, 2])  # 结果返回 True

print(1 not in [0, 1, 2])  # 结果返回 False

print("a" in {"a": "vvcat"}) # 结果返回 True

print("vvcat" in {"a": "vvcat"}) # 结果返回 False
6. 局部变量和全局变量
  • 局部变量是在函数内部定义的变量,只能在函数内部使用
  • 全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量
6.1局部变量
  • 局部变量 是在 函数内部 定义的变量,只能在函数内部使用
  • 函数执行结束后,函数内部的局部变量,会被系统回收
  • 不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响

局部变量的作用、

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

局部变量的声明周期

  • 所谓声明周期就是变量从 被创建 到被系统回收的过程
  • 局部变量在 函数执行时 次啊会被创建
  • 函数执行结束后 局部变量 被系统回收
  • 局部变量在生命周期内,可以用来存储 函数内部临时使用到的数据
6.2全局变量
  • 全局变量 是在函数外部定义 的变量,所有函数内部都可以使用这个变量

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

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

1)函数不能直接修改 全局变量的引用

  • 全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所以函数内部 都可以使用这个变量
  • 在函数内部,可以通过全局变量的引用获取对应的数据
  • 但是,不允许直接修改全局变量的引用——— 使用赋值语句修改全局变量的值

2)在函数内部修改全局变量的值

  • 如果在函数中需要修改全局变量,需要使用 global 进行声明

例如:

# 全局变量
num = 50

def demo1():
    # 希望修改全局变量的值 - 使用 global 声明一下变量即可
    # global 关键字会告诉解释器后面的变量是一个全局变量
    # 在使用赋值语句时,就不会创建局部变量
	global num
    num = 100

    print("demo1 ==> %d" % num)

def demo2():
    print("demo2 ==> %d" % num)

demo1()
demo2()

3)全局变量定义的位置

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

注意:如果全局变量定义在 调用函数之后 ,在执行函数时,变量还没有定义,所以程序会报错!

为了区分全局变量和局部变量,在定义全局变量名前建议增加g_或者 gl_的前缀

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值