鱼C论坛

 找回密码
 立即注册
查看: 1918|回复: 11

[已解决]python log

[复制链接]
发表于 2017-8-8 15:41:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import logging

  2. _logger = logging.getLogger(__name__)
复制代码


上面这句什么意思,参数__name__又是指什么

python中的方法或者变量前后加上__,是有什么特别的意义用法吗?
最佳答案
2017-8-11 16:06:32
虽然没学到模块,但经常遇到这些「内建函数」不免让人感到好奇。
谷歌总是很容易查到有用的信息。既然是内建函数 (built-in functions),那么查询一番:
  1. http://www.google.com/search?q=python+built+in+functions+of+current+module
复制代码
比如这个 Stackoverflow 的这个帖子:
  1. https://stackoverflow.com/questions/990422/how-to-get-a-reference-to-current-modules-attributes-in-python
复制代码
提到两种方法去查看这些内建函数:
  1. globals()
复制代码
以及
  1. import sys
  2. dir(sys.modules[__name__])
复制代码
运行的结果在不同的环境下可能有点不同。
比如这个是在我自己机器上的 MSYS2 下的 Python 3.6.1 显示的:
  1. >>> globals()
  2. {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
复制代码
这个是在 CentOS 上 Anaconda 中的 Python 3.6.1 显示的:
  1. >>> globals()
  2. {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'datetime': <module 'datetime' from '/home/heller/anaconda3/lib/python3.6/datetime.py'>, 'sys': <module 'sys' (built-in)>}
复制代码
不知「内建函数」这个称谓是否合适,但确实得到了些关于模块的属性。最后关于这块的官方文档根据上面的那个帖子,应该是这个:
  1. https://docs.python.org/3.6/library/inspect.html
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-8-8 16:42:31 | 显示全部楼层
if __name__ = '__main__':
  这个语句应该看过吧。 __name__就是 当前模块 模块名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 17:30:38 | 显示全部楼层
ba21 发表于 2017-8-8 16:42
if __name__ = '__main__':
  这个语句应该看过吧。 __name__就是 当前模块 模块名
  1. if __name__ = '__main__'
复制代码
这个看过,不懂意思,__name__是哪里赋值的,这里可以直接使用?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-8 18:12:28 From FishC Mobile | 显示全部楼层
在本程序里面__name__运行就是__main__,在其他程序里面导入就是文件名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-8-8 18:12:53 | 显示全部楼层
只为 发表于 2017-8-8 17:30
这个看过,不懂意思,__name__是哪里赋值的,这里可以直接使用?

2017-08-08_181108.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 20:34:30 | 显示全部楼层
ooxx7788 发表于 2017-8-8 18:12
在本程序里面__name__运行就是__main__,在其他程序里面导入就是文件名

你的意思是其他程序里面__name__,可以替换成文件名?
__name__在哪里定义的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 20:37:50 | 显示全部楼层
  1. >>> print(__name__)
  2. __main__
复制代码

这个怎么解释呢,为啥当前模块名就是__name__

能提点下去哪里补充下这方面知识吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-8 21:12:49 | 显示全部楼层
只为 发表于 2017-8-8 20:37
这个怎么解释呢,为啥当前模块名就是__name__

能提点下去哪里补充下这方面知识吗

等高手给你解释吧@!~!上图都看不懂,我也没有办法了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-8 21:21:20 | 显示全部楼层
ba21 发表于 2017-8-8 21:12
等高手给你解释吧@!~!上图都看不懂,我也没有办法了

你说的这个是哪一块的知识啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-8 21:44:51 | 显示全部楼层
只为 发表于 2017-8-8 21:21
你说的这个是哪一块的知识啊

何必要想得这么复杂;__name__就是获取模块的名字。
在当前运行的模块获取__name__永远都是 __main__;
模块就是你的程序,当前模块 就是 当前你运行的程序。
还是自己看图:
2017-08-08_213339.png
2017-08-08_213547.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-8-8 21:49:11 | 显示全部楼层
ba21 发表于 2017-8-8 21:44
何必要想得这么复杂;__name__就是获取模块的名字。
在当前运行的模块获取__name__永远都是 __main__; ...

能看懂你这个,只是这不是只是一个相当于__name__的属性吗,所以想了解相关的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-11 16:06:32 | 显示全部楼层    本楼为最佳答案   
虽然没学到模块,但经常遇到这些「内建函数」不免让人感到好奇。
谷歌总是很容易查到有用的信息。既然是内建函数 (built-in functions),那么查询一番:
  1. http://www.google.com/search?q=python+built+in+functions+of+current+module
复制代码
比如这个 Stackoverflow 的这个帖子:
  1. https://stackoverflow.com/questions/990422/how-to-get-a-reference-to-current-modules-attributes-in-python
复制代码
提到两种方法去查看这些内建函数:
  1. globals()
复制代码
以及
  1. import sys
  2. dir(sys.modules[__name__])
复制代码
运行的结果在不同的环境下可能有点不同。
比如这个是在我自己机器上的 MSYS2 下的 Python 3.6.1 显示的:
  1. >>> globals()
  2. {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
复制代码
这个是在 CentOS 上 Anaconda 中的 Python 3.6.1 显示的:
  1. >>> globals()
  2. {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'datetime': <module 'datetime' from '/home/heller/anaconda3/lib/python3.6/datetime.py'>, 'sys': <module 'sys' (built-in)>}
复制代码
不知「内建函数」这个称谓是否合适,但确实得到了些关于模块的属性。最后关于这块的官方文档根据上面的那个帖子,应该是这个:
  1. https://docs.python.org/3.6/library/inspect.html
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-1 10:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表