欢迎访问Python每天3分钟系列。

每天花3分钟时间,学习或温习一个Python知识点。

图片

今天是第040篇:

三个很有用的函数

我在不同的场合强调过这3个学习者必须知道的3个函数。

因为知道了它们,你就具备了一定的元学习能力!在没有人帮你的时候,也可以高效的自己探索学习。

这三个函数就是:

  • dir()
  • help()
  • id()

假设有位高人跟你说:你可以用random模块产生随机数字。

你内心充满感谢,但仍然会很懵逼。因为你不知道怎么用random模块。

dir就是打开这个问题的正确姿势:

import random
print(dir(random))

上面的代码使用dir函数列出random模块下的所有变量和函数,然后打印出来。运行结果:

['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_ONE', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_index', '_inst', '_isfinite', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

这里面就有可以帮你生成随机数字的函数。

如果你觉得这有点难看,可以用pprint打印的漂亮点:

import random, pprint
pprint.pprint(dir(random))

打印结果:

['BPF',
 'LOG4',
 'NV_MAGICCONST',
 'RECIP_BPF',
 'Random',
 'SG_MAGICCONST',
 'SystemRandom',
 'TWOPI',
 '_ONE',
 '_Sequence',
 '_Set',
 '__all__',
 '__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 '_accumulate',
 '_acos',
 '_bisect',
 '_ceil',
 '_cos',
 '_e',
 '_exp',
 '_floor',
 '_index',
 '_inst',
 '_isfinite',
 '_log',
 '_os',
 '_pi',
 '_random',
 '_repeat',
 '_sha512',
 '_sin',
 '_sqrt',
 '_test',
 '_test_generator',
 '_urandom',
 '_warn',
 'betavariate',
 'choice',
 'choices',
 'expovariate',
 'gammavariate',
 'gauss',
 'getrandbits',
 'getstate',
 'lognormvariate',
 'normalvariate',
 'paretovariate',
 'randbytes',
 'randint',
 'random',
 'randrange',
 'sample',
 'seed',
 'setstate',
 'shuffle',
 'triangular',
 'uniform',
 'vonmisesvariate',
 'weibullvariate']

从上到下看一下,不难猜出其中一些函数的作用,比如:

  • randint产生随机的整数
  • random可以产生随机的小数

当然这只是猜测,如何确定呢?

这里就可以用help函数了。help会打印出一个函数的详细解释。这次我们用交互式Python(直接写代码也一样,但交互式Python更方便):

>>> import random
>>> help(random.randint)

上面的代码使用help函数打印random模块下的randint函数的详细说明。注意,要先import random模块才能打印。打印结果:

Help on method randint in module random:

randint(a, b) method of random.Random instance
    Return random integer in range [a, b], including both end points.

这是英语,认真看一下,上面写的还挺清楚的。

接下来就可以在交互式Python下尝试一下了:

>>> import random
>>> help(random.randint)

>>> random.randint(1, 10)
7

在交互式Python下,使用dir和help这两个函数,可以很高效的探索模块或者类。是居家旅行,学习Python的必备函数。

图片

第三个函数是id(),它的用处是打印对象内存的地址。

这个函数好像没有前两个那么有用,但回想一下前两天的内容,id函数还是挺有用的,毕竟理解Python对象的内存结构是很重要的。

>>> name = '张三'
>>> name2 = '张三'
>>> name3 = '张三'
>>> id(name)
4347189392
>>> id(name2)
4347194288
>>> id(name3)
4348257232

例子中虽然三个变量都是张三,但它们的内存地址是不同的,说明它们不是同一个对象。

声明:本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。反馈邮箱:1159995880@qq.com