dir() 函数 不带参数,直接执行是返回当前环境中对象的名称列表。指定对象的名称作为参数执行,返回指定对象当中的属性(包括函数名,类名,变量名等)
下面我们具体找几个例子测试一下 dir() 函数的功能。
新打开一个python命令窗口,输入dir()查看会展示那些信
(venv) D:\PycharmProjects\rain>python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
下面我们在创建一个变量,在执行dir() 函数,我们观察会出现什么不一样。
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> aaa = ["luck","tom","jack"]
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'aaa']
>>> dir(aaa)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
em__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__ne
w__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'ap
pend', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
可以看到当我们创建 aaa变量,并且给aaa变量赋值一个列表以后,在执行dir() 函数,输出就会新增一个 aaa的对象。说明,当我们在python 命令中断创建变量,以后这个变量就作为对象会被加入到当前环境当中,我们可以列出这个对象具有的属性,包括系统默认的属性。就如 dir(aaa) 我看到的 sort,pop,insert 等等。当前我们也可以调用这些属性,对对象进行一定的修改。
下面我们练习一个 导入模块,看下和python 命令行有和不同。
软件:pycharm
新建一个项目 rain,在项目中新建两个文件:一个 module_1.py ,一个 test.py module_1.py。
如图
向 module_1.py 中添加 如下代码:
ame_1 = "one day"
def first0():
print("导包 -> first0函数已经被执行")
def first1(a,b):
c = a + b
return c
def first2(arc):
print(arc)
def first3(arc):
from random import choice
aaa = ["sun","rain","wind"]
return choice(aaa)
class Student:
def __init__(self, name, id, sex, age):
""" student dealwith func"""
self.name = name
self.id = id
self.sex = sex
self.age = age
def brithday_year(self):
from _datetime import datetime
year = datetime.now().strftime("%Y")
year = int(year) - self.age
return year
使用 test.py 来调用 module_1.py 当中定义的成员对象
向test.py 添加以下代码:
# python 导包时,在当前沐目录可以直接进行导包,无需告诉解释器导包路径
#导包前
print(dir())
import module_1
#导包后
print(dir())
#调用对象的属性
print(dir(module_1))
# import sys
执行结果:
我们来看下 Student这个类的属性,或 成员。
看输出结果中有,"brithday_year”。就是我们在module_1.py 当中定义的class Student 当中的成员函数。
可以发现dir() 在我们日常开发当中非常的方便我们去查看当前环境中导入了 那些对象,这些对象都有那些方法。