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__.py
Process 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