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。

如图

chdir函数python python dir函数_python

 

  向  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这个类的属性,或 成员。

chdir函数python python dir函数_bc_02

 

 

 看输出结果中有,"brithday_year”。就是我们在module_1.py 当中定义的class Student 当中的成员函数。

可以发现dir() 在我们日常开发当中非常的方便我们去查看当前环境中导入了 那些对象,这些对象都有那些方法。