type和isinstance区别
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
python成员运算符
测试实例中包含了一系列的成员,包括字符串、列表或元组。
运算符 | 描述 |
---|---|
in | 在指定序列中找到值返回Ture,否则返回False |
not in | 在指定的序列中没有找到值返回Ture |
python身份运算符
身份运算符用于比较两个对象的存储单元
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
注: id() 函数用于获取对象内存地址。
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
变量作用域
Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
1 | x = int(2.9) # 内建作用域 |
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
global和nonlocal关键字
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
1 | #!/usr/bin/python3 |
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
1 | #!/usr/bin/python3 |