python内置函数(四)

251 阅读2分钟

1.命名空间变量函数

1.1 locals()函数

查看当前命名空间的局部变量

1.2 globals()函数

查看当前命名空间的全局变量

global_variable = 2
global_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
​
​
def func_common():
    lcoal_variable = 3
    lcoal_dict = {"a": "A", "b": "B"}
    print('局部命名空间的变量为:')
    print(f'locals()==={locals().keys()}')
    print(f'globals()==={globals().keys()}')
​
    def func_inner():
        inner__variable = 4
        inner__tuple = ('male', 'female')
        print('内嵌命名空间的变量为:')
        print(f'locals()==={locals().keys()}')
        print(f'globals()==={globals().keys()}')
​
    func_inner()
​
​
print('全局命名空间的变量为:')
print(f'locals()==={locals().keys()}')
print(f'globals()==={globals().keys()}')
func_common()

result:

全局命名空间的变量为:

locals()===dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__file__', '__cached__', 'global_variable', 'global_list', 'func_common'])
globals()===dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__file__', '__cached__', 'global_variable', 'global_list', 'func_common'])
局部命名空间的变量为:
locals()===dict_keys(['lcoal_variable', 'lcoal_dict'])
globals()===dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__file__', '__cached__', 'global_variable', 'global_list', 'func_common'])
内嵌命名空间的变量为:
locals()===dict_keys(['inner__variable', 'inner__tuple'])
globals()===dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__file__', '__cached__', 'global_variable', 'global_list', 'func_common'])

2.类型判断函数

D:\software\python\python.exe D:/workspace/python_record/python-record/__init__.pyProcess finished with exit code -1

2.1 type()函数

查看对象的类型

lst = [1, 3, 5, 7]
print(type(lst))

result:

<class 'list'>

2.2 isinstance()函数

查看对象是否是某个类的实例

lst = [1, 3, 5, 7]
print(isinstance(lst, list))

result:

True

注:

这里注意type()函数和isinstance()函数是有差异的,下面逐一解释之。

他们俩的共同点在于都可以判断某个变量是否属于某个类型。

不同点如下:

1.type只有一个参数,不仅可以判断变量是否属于某个类型,还可以得到参数变量未知的所属类型; isinstance只能判断是否属于某个已知类型,不能直接得到变量未知的所属类型

2.sinstance可以判断子类实例对象是属于父类的 type会判断子类实例对象和父类类型不一样

这里举例进行说明

class Animal(object):
    pass
​
​
class Dog(Animal):
    pass
​
​
if __name__ == '__main__':
    animal = Animal()
    dog = Dog()
    print(f'type(animal) == {type(animal)}')
    print(f'type(dog) == {type(dog)}')
    print(type(animal) == type(dog))
    print(f'isinstance(animal) == {isinstance(animal, Animal)}')
    print(f'isinstance(dog) == {isinstance(dog,Animal)}')
    print(isinstance(animal,Animal) == isinstance(dog, Animal))

result:

type(animal) == <class '__main__.Animal'>
type(dog) == <class '__main__.Dog'>
False
isinstance(animal) == True
isinstance(dog) == True
True