[888]python内置函数vars()|dir()|locals()

dir()和vars()的区别

dir()只打印属性(属性,属性…)

而vars()则打印属性与属性的值(属性:属性值…),不带参数功能和locals()函数一样

>> a='aaaaaaaaaaaaa'
>> class b:
>>     c = 'cccc'

>> dir()
>>['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'b']    

>> vars()
>> {'a': 'aaaaaaaaaaaaa', 'b': , '__builtins__': , '__file__': 'C:\\Users\\CS11\\Desktop\\test.py', '__package__': None, '__name__': '__main__', '__doc__': None} 
>> dir(b)  
>>['__doc__', '__module__', 'c']
   
>> vars(b)
>>{'__module__': '__main__', 'c': 'cccc', '__doc__': None}

vars() 函数

vars() 函数返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。

当函数接收一个参数时,参数可以是模块、类、类实例,或者定义了__dict__属性的对象。

>>>print(vars())
{'__builtins__': , '__name__': '__main__', '__doc__': None, '__package__': None}
>>> class Runoob:
...     a = 1
... 
>>> print(vars(Runoob))
{'a': 1, '__module__': '__main__', '__doc__': None}
>>> runoob = Runoob()
>>> print(vars(runoob))
{}
------------------------------------------------------------------------------
#作用于模块
>>> import time
>>> vars(time)
{'gmtime': , 'tzname': ('Öйú±ê׼ʱ¼ä', 'ÖйúÏÄÁîʱ'), 'timezone': -28800, 'struct_time': , 'ctime': , 'perf_counter': , 'mktime': , 'localtime': , 'time': , '__package__': '', 'altzone': -32400, 'clock': , 'strptime': , 'monotonic': , '__loader__': , 'get_clock_info': , 'sleep': , 'process_time': , '__name__': 'time', '_STRUCT_TM_ITEMS': 9, '__spec__': ModuleSpec(name='time', loader=, origin='built-in'), '__doc__': 'This module provides various functions to manipulate time values.\n\nThere are two standard representations of time. One is the number\nof seconds since the Epoch, in UTC (a.k.a. GMT). It may be an integer\nor a floating point number (to represent fractions of seconds).\nThe Epoch is system-defined; on Unix, it is generally January 1st, 1970.\nThe actual value can be retrieved by calling gmtime(0).\n\nThe other representation is a tuple of 9 integers giving local time.\nThe tuple items are:\n year (including century, e.g. 1998)\n month (1-12)\n day (1-31)\n hours (0-23)\n minutes (0-59)\n seconds (0-59)\n weekday (0-6, Monday is 0)\n Julian day (day in the year, 1-366)\n DST (Daylight Savings Time) flag (-1, 0 or 1)\nIf the DST flag is 0, the time is given in the regular time zone;\nif it is 1, the time is given in the DST time zone;\nif it is -1, mktime() should guess based on the date and time.\n\nVariables:\n\ntimezone -- difference in seconds between UTC and local standard time\naltzone -- difference in seconds between UTC and local DST time\ndaylight -- whether local time should reflect DST\ntzname -- tuple of (standard time zone name, DST time zone name)\n\nFunctions:\n\ntime() -- return current time in seconds since the Epoch as a float\nclock() -- return CPU time since process start as a float\nsleep() -- delay for a number of seconds given as a float\ngmtime() -- convert seconds since Epoch to UTC tuple\nlocaltime() -- convert seconds since Epoch to local time tuple\nasctime() -- convert time tuple to string\nctime() -- convert time in seconds to string\nmktime() -- convert local time tuple to seconds since Epoch\nstrftime() -- convert time tuple to string according to format specification\nstrptime() -- parse string to time tuple according to format specification\ntzset() -- change the local timezone', 'strftime': , 'asctime': , 'daylight': 0}
 
#作用于类
>>> vars(slice)
mappingproxy({'__ne__': , '__getattribute__': , '__reduce__': , 'start': , 'indices': , '__ge__': , 'stop': , '__eq__': , 'step': , '__hash__': None, '__doc__': 'slice(stop)\nslice(start, stop[, step])\n\nCreate a slice object. This is used for extended slicing (e.g. a[0:10:2]).', '__repr__': , '__le__': , '__gt__': , '__new__': , '__lt__': })
 
#作用于类实例
>>> class A(object):
  pass
 
>>> a.__dict__
{}
>>> vars(a)
{}
>>> a.name = 'Kim'
>>> a.__dict__
{'name': 'Kim'}
>>> vars(a)
{'name': 'Kim'}

对于 x = 1,这样的一个赋值语句,我们在执行后,名称 x 引用到值 1。这就像字典一样,键引用值,当然,变量和所对应的值用的是个"不可见"的字典。我们可以使用 vars 函数来返回这个字典:

>>> x = 1
>>> scope = vars()
>>> scope["x"]
1

参考:https://www.runoob.com/python/python-func-vars.html
https://www.cnblogs.com/leisurelylicht/p/Python-dir-hevars-de-qu-bie.html
https://www.jb51.net/article/129698.htm

你可能感兴趣的:(python前行者)