【python51--__name__属性】
一、基础知识
1、__name__ == '__main__'
所有模块都有一个__name__属性,__name__的值取决于如何应用模块,在作为独立程序运行的时候,__name__属性的值是‘__main__’,而作为模块导入的时候,这个值就是该模块的名字了
if __name__ == '__main__'
test()
含义:如果name调用的是主程序的则,运行if里面的test()语句,而不是其他的(如导入的包)的语句
2、搜索路径:python模块的导入需要一个路径搜索的过程,导入一个hello模块,Python需要找到一个叫hello.py的文件,如果找到就搜索成功即导入成功,找不到就失败
-- Python搜索相关路径下的模块
>>> import sys
>>> sys.path
['', '/Users/wufq/Documents', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']
>>> #一般常用的是/site-packahes路径,按照这个逻辑来说,我们只需要告诉模块文件在哪里,就可以让Python在此路径下找
--存放Python的模块文件
>>> import Temperature
Traceback (most recent call last):
File "<pyshell#2>", line , in <module>
import Temperature
ModuleNotFoundError: No module named 'Temperature'
>>> sys.path.append("/Users/wufq/Documents/test")
>>> sys.path
['', '/Users/wufq/Documents', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages', '/Users/wufq/Documents/test']
>>> import Temperature
>>> Temperature.c2f()
89.6
>>> '''
|--代码解释:
|-- 先导入:import Temperature,报错,原因是python在搜索路径下没有找到这个包
|-- 解决方法:把Temperature文件所在的路径放到python的搜索路径下:sys.path.append("/Users/wufq/Documents/test"),查看一下是不是已经加入:sys.path
|-- 再次导入验证:import Temperature --> Temperature.c2f() --> 89.6
'''
3、包(package)
-- 创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字
-- 在文件夹中创建一个__init__.py的模块文件,内容可以为空明
-- 将相关的文件放入文件中

import IM.Temperature as tr print(tr.c2f())
print(tr.f2c()) '''
|-- 代码解析:
|--、先创建一个文件夹IM,并把Temperature.py文件放到IM文件夹内,并创建一个空的__init__.py文件
|--、新建一个calc.py文件,编写相应的代码(即:上面的代码)
|--、import时必须带着包名IM(import IM.Temperature as tr),否则就会报错
'''
4、如果不想把相应的模块放在当前文件夹内,最好的选择是?
放在site-packages文件夹内,因为他就是存放模块的文件夹
5、import urllib.request语句,这个urllib是什么
urllib是负责管理url的包,用于访问网址
6、如何区分一个文件夹是普通的文件夹还是包
主要看这个文件夹内是否含有__init__.py,如果有则是包,并且__init__.py可以是空文件,也可以里面写一些代码
【python51--__name__属性】的更多相关文章
- __name__属性
#coding=utf-8#首先我们分别看一下这个模块在不同场景中的__name__的值print __name__ #其次我们看一下__name__属性的常用情况if __name__==" ...
- Python的程序入口 __name__属性
python中每个模块都有一个 '__name__' 属性,当其值为 '__main__' 时,表名该模块自身在运行,否则是被引入的. 当一个模块被当做一个整体调用的时候,模块名.__name__ 的 ...
- Python中__name__属性的妙用
在Python中,每一个module文件都有一个built-in属性:__name__,这个__name__有如下特点: 1 如果这个module文件是被别的文件导入的,那么,该__name__属性的 ...
- Python 的__name__属性
Python 的__name__属性: 一个模块被另一个程序第一次引入时,其主程序将运行. 如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身 ...
- 11 模块、模块的搜索顺序、__file__内置属性、__name__属性
模块的概念 一个python文件就是一个模块. 模块名同时也是一个标识符,需要符合标识符的命名规则. 在模块中定义的全局变量.函数.类 都是个外界提供的直接使用的工具. 模块就好比工具包,要想使用一个 ...
- python中__name__属性的使用
python常用模块目录 1.打印出函数名字而非函数名对应的地址 )打印的是函数地址 def func(): print("我是%s函数"%func) func() ------- ...
- Python - 属性简介"__name__"
模块是对象,并且每个模块都有一个内置属性__name__.当一个模块被直接运行的时候,该模块__name__的值就等于缺省的'__main__'.如果一个模块被import ,那么这个被引入模块__n ...
- python的__name__和dir()属性
1.__name__属性 一个模块被另一个程序第一次引入时,其主程序将运行.如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行.示例 ...
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- python动态获取对象的属性和方法 (转载)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...
随机推荐
- c#中的模态对话框和非模态对话框
模态对话框弹出窗口阻止调用窗口的所有消息响应.只有在弹出窗口结束后调用窗口才能继续.在模态窗口“关闭”后,可以读取模态窗口中信息,包括窗口的返回状态,窗口子控件的值. 非模态对话框可以在弹出窗口和调用 ...
- Unity shader学习之Grab Pass实现玻璃效果
GrabPass可将当前屏幕的图像绘制在一张纹理中,可用来实现玻璃效果. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7201324.html shader ...
- python ip代理
import random import urllib.request from bs4 import BeautifulSoup import time url ='http://www.whati ...
- hdu5125 树状数组+dp
hdu5125 他说的是n个人每个人都有两个气球a,b,气球各自都有相应的体积,现在让他们按照序号排列好来,对他们的a气球体积值计算最长上升子序列,对于这整个排列来说有m次机会让你将a气球替换成b气 ...
- 【impala学习之一】impala
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.ImpalaImpala是基于Hive的大数 ...
- JavaScript <script>标签的位置、延迟脚本(defer属性)与 异步脚本(async属性)
一.<script>标签的位置 传统的做法是将<script>元素放在<head>元素中,例如: <!DOCTYPE html><html > ...
- python 将字节写入文本文件
想在文本模式打开的文件中写入原始的字节数据 将字节数据直接写入文件的缓冲区即可 >>> import sys >>> sys.stdout.write(b'Hell ...
- NGINX的几个应用场景
NGINX的几个应用场景 两个参考地址: NGINX的百度百科:https://baike.baidu.com/item/nginx/3817705?fr=aladdin NGINX的中文网站:htt ...
- MQ(转)
1. 到底什么时候该使用MQ? 1). 典型场景一:数据驱动的任务依赖 采用MQ的优点是: a. 不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行 b. 依赖多个任务,被多个任务依 ...
- 算法提高 P0102
用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0.(不考虑 ...