生存战争,伊可新,小猪图片-日料吃法大全,日料做法分享

admin 1周前 ( 11-30 23:48 ) 0条评论
摘要: 喜欢Python的小伙伴,希望本篇文章可以给你带来帮助!^.^看到最后,给自己一个学习的基地!不管你是大佬还是小白,一起学习共同进步!感谢大家一直来的支持!程序入口对于很多编程语言...

喜爱Python的小伙伴,期望本篇文章能够给你带来协助!^.^

看到最终,给自己一个学习的基地!不论你是大佬仍是小白金梅瓶,一同学习共同进步!感谢咱们一向来的支撑!

程序进口

关于许多编程言语来说,程序都有必要要有一个进口,比方 C,C++,以及彻底面向对象的编程言语 Java,C# 等。假如你触摸过这夏红全些言语,关于程序进口这个概念应该很好了解,C 和 C++ 都需求有一个 main 函数来作为程序的进口,也便是程序的运转会从 main 函数开端。相同,Java 和 C# 有必要要有一个包含 Main 办法的主类来作为程序进口。

而 Python 则有不同,它归于脚本言语,不像编译型言语那样先将程序编译成二进制再运转,而是动态的逐西瓜哥哥行解说运转。也便是从脚本榜首行开端运转,没有一致的进口。

一个 Python 源码文件除了能够被直接运转外,还能够作为模块(也便是库)被导入。不论是导入仍是直接运转,最顶层的代码都会被运转(Python 用缩进来差异代码层次)。而实际上在导入的时分,有一部分代码咱们是不期望被运转的。

举一个比如来阐明一下,假定咱们有一个 const.py 文件,内容生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享如下:

咱们bravotube在这个文件里面界说了一些常量,然后又写了一个 main 函数来输出界说的常量,最终运转 main 函数就适当于对界说做一遍人工查看,看看值设置的都对不对。然后咱们直接履行该文件(python const.py),输出:

PI: 3.14

现在,咱们有一个 area.py 文件,用于核算圆的面积,该文件里面需求用到 const.py 文件谍影猎杀中的 PI 变量,那么咱们从 const.py 中把 PI 变量导入到 area.py 中:

fro生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享m const import PI

def calc_round_area(radius):
return PI * (radius ** 2)

def main():
print "round area: ", calc_尹暮夏round_area(2)

main()

然后再运转 area.py,输出如下:

round area: 12.56

再运转下 const.py,输出如下:

PI: 3.14

这才是咱们想要的效果。

if name == 'main' 就适当所以 Python 模仿的程序进口。Python 自身并没有规则这么写,这仅仅一种编码习气。因为模块之间彼此引证,不同模块或许都有这样的界说,而进口程序只能有一个。究竟哪个进口程序被选中,这取决于 name 的值。

name

name 是内置变量,用于表明当时模块的姓名,一起还能反映一个包的结构。来举个比如,假定有如下一个包:

目录中所有 py 文件的内容都为90010西门:

print(__name__)

咱们履行 python -c "import a.b.c",输出成果:

a
a.b
a.b.c

由此可见,name 能够明晰的反映一个模块在包中的层次。其实,所谓模块名便是 import 时需求用到的姓名,例如:

import tornado
import tornado.web

这儿的 tornado 和 tornado.web 就被称为模块的模块名。

假如一个模块被直接运转,则其没有包结构,其 name 值为 main。例如在上例中,咱们直接运转 c.p生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享y 文件(python a/b/c.py),输出成果如下:

__main__

所以,if name == 'main' 咱们简略的了解便是: 假如模块是被直接运转的,则代码块被运转,假如模块是被导入的,则代码块不被运转。

实际上,这个问题还能够衍生出其他的一些知识点,例如 main.py 文件与 Python 的 -m 参数。

main.py 文件与 python -m

Python 的 -m 参数用于将一个模块或许包作为一个脚本运转,而 main.py 文件则适当所以一个包的”进口程序“。

首要咱们需求来看看 python xxx.py 与 python -m xxx.py 的差异。两种运转 Python 程序的方法的不同点在于,一种是直接运转,一种是作为模生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享块来运转。

先来看一个简略的比如,假定有一个 Python 文件 run生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享.py,其内容如下:

import sys
print(sys.path)

咱们用直接运转的方法发动(python run.py),输出成果(为了阐明问题,输出成果只截取了重要部分,下同):

['/home/huoty/aboutme/pythonstudy/main', ...]

然后以模巫夷人家块的方法运转(python -m run.py):

['',dkgirl ...]
/usr/bin/python: No m02995511odule named ru秋兰赋n.py

因为输出成果只列出了要害的部分,应该很简略看出他们之间的差异。直接运转是把 run.py 文件地点的目录放到了 sys.path 特点中。以模块方法运转是把你输入指令的目录(也便是当时工作途径),放到了 sys.path 特点中。以模块方法运转还有一个不同的当地是,多出了一行 No module named文武贝是什么字 run.py 生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享的过错。实际上以模块方法运转时,Python 先对 run.py 履行一遍 import,所以 prin西村理香t sys.path 被成功履行,然后 Python 才测验运转 run.py 模块,可是,在 pat李大治h 变量中并没有 run.py 这个模块,所以报错。而正确的运转方法,应该是 python -m run.

这个比如并不能显着的阐明问题。接着咱们来看看 main.py 的效果。

依然先看比如,有如下生计战役,伊可新,小猪图片-日料吃法大全,日料做法共享一个包:

用 python -m package 运转成果:

__init__
['', ...]
__main__
['', ...]

用 python package 运转成果:

__main__
['package', ...]

然后咱们来总结一下:

1、 加上 -m 参数我爱酸酸乳时会把当时工作目录添加到 sys.path 中,而不加时则会把脚本地点目录添武英热油泵加到 sys.path 中。

2、 加上 -m 参数时 Python 会先将模块或许包导入,然后再履行

3、 main.py 文件是一个包或许目录的进口程序。不论是用 python package 仍是用 python -m package 运转时,main.py 文件总是被履行。

后序

我企图运用长篇大论来论述,在 Python 中怎么了解 if name == 'main' 这个问题,不知道我有没有描绘得满足的了解。Python 的确是简略的,高雅的,但也有许多问题是不太简略了解的,例如许多高档的特性,像元类、生成器表达式、描洛伊映画述符、协程等。Python 并没有在太多的当地规则要怎么怎么,许多的用法仅仅惯用法,例如 self 和本文评论的内容。这些用法或是为了郑王府让代码看起来更高雅,或是前人的经历。运用 Python 是有无限或许的,你能够写出许多简练高雅的代码。

最终多说一句,小编是一名python开发工程师,这儿有我自己整理了一套最新的python体系学习教程,包含从根底的python口活脚本到web开发、爬虫、数据剖析、数据可视化、机器学习等。想要这些材料的能够重视小编,并在后台私信小编:“01”即可收取。

文章版权及转载声明:

作者:admin本文地址:http://www.chigasaki-town.net/articles/4618.html发布于 1周前 ( 11-30 23:48 )
文章转载或复制请以超链接形式并注明出处日料吃法大全,日料做法分享