我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 入口函数(菜鸟入门)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 入口函数(菜鸟入门)


最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化。虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出优化方案,最后让 TA 去编码实现。但是程序员心理使然,什么东西都想自己琢磨明白,于是开启了摸索历程。

上网搜索资料,下载了 PyCharm 开发工具,进行了一些环境配置,于是乎就开工了。由于之前没有接触过 Python 语言,打开代码文件夹就蒙圈了,只见一大堆 .py 文件,不知道从哪里入手。本人 C# 出生,写过少许 C/C++,所以一直想着有个类似 Main() 函数的东西是整个程序的入口。然而,查遍了整个目录,没有找到任何线索,接下来就开始各种捣鼓。

需要说明的是,本文仅是一只 Python 菜鸟的学习笔记,并不一定正确或完整,欢迎大家斧正。
每每接触新工具或新语言,都有一种莫名的欣喜,乐于用旧知识来推敲,故而载之。

顺序执行

Python 世界中,每一个 .py 文件就是一个模块,在控制台中输入文件名即可调用该模块。
模块有些类似于 批处理文件(.bat) ,其中的语句是按顺序执行的。
这点和我最初的想象不一致,总想着它和 C# 等语言一样,文件中应该由 class 来组织,实则不然。

首先,在 D盘 根目录创建一个名 Test1.py 的文件,内容如下:

print("Test1 First")
print("Test1 Second")

然后,转到控制台,将目录切换到 D盘 ,启动 Test1.py 模块,结果如下:

D:\>python Test1.py
Test1 First
Test1 Second

嗯,不错,完全符合预期,再试一下模块间调用。
D盘 中创建 Test2.py 文件,在其中调用 Test1.py 模块:

import Test1

print("Test2 First")
print("Test2 Second")

在控制台中启动 Test2.py ,输出结果:

D:\>python Test2.py
Test1 First
Test1 Second
Test2 First
Test2 Second

可以理解的是,在 Test2.py 文件中, import Test1 语句在前面,所以在导入 Test1 模块时便执行了其中的语句,因此 Test1 中的输出在前面。
如果将 import Test1 放在后面, Test1 的输出也会出现在后面:

print("Test2 First")
print("Test2 Second")

import Test1
D:\>python Test2.py
Test2 First
Test2 Second
Test1 First
Test1 Second

函数定义

模块中的代码能否更加灵活?除了按顺序执行,还可以根据需要调用,就像 C# 语言中的函那样。
上文中的 Print 应该就是一个内建函数,查资料,找到 Pyhton 中函数的定义:

def 函数名(参数列表):
    函数体

赶紧试一下,在 Test1.py 中定义一个 SayHello 函数:

print("Test1 First")
print("Test1 Second")

def SayHello():
	print("Hello World")

SayHello()
print("Test1 Third")

输出结果:

D:\>python Test1.py
Test1 First
Test1 Second
Hello World
Test1 Third

嗯,符合预期,没毛病,按顺序执行。
如果只是定义 SayHello() 函数,而没有调用的话,是不会有 Hello World 一行输出的。

接下来,尝试一下模块间函数的调用,修改 Test2.py 文件:

import Test1

print("Test2 First")
print("Test2 Second")

Test1.SayHello()

输出如下:

D:\>python Test2.py
Test1 First
Test1 Second
Hello World
Test1 Third
Test2 First
Test2 Second
Hello World

哈哈,对的,对的,最后一行的 Hello World 即是 Test2.py 中的 Test1.SayHello() 语句输出的。
至于前面第三行的 Hello World 嘛,那是 import Test1 时由 Test1 模块输出的。

__main__

了解了函数的定义及模块间的调用,随之而来的疑惑是,程序\模块 的入口在哪里。
搜索了一下资料,找到了 __name__ 属性。先来测试一段代码,修改 Test1.py 文件:

def SayHello():
	print("Hello World")
	
def SayBye():
	print("Bye World")


SayHello()

if(__name__=="__main__"):
	print("Main")

SayBye()

在控制台中直接启动 Test1.py

D:\>python Test1.py
Hello World
Main
Bye World

嗯,还好理解,按顺序执行的,且满足了 if(__name__=="__main__") 条件,所以输出了 Main
且慢,换一种方式,通过 Test2.py 间接调用 Test1.py 试试,先修改 Test2.py 文件:

import Test1

print("Test2 First")
print("Test2 Second")

然后启动 Test2.py 文件来看看结果:

D:\>python Test2.py
Hello World
Bye World
Test2 First
Test2 Second

纳尼,怎么没有输出 Mani 呢?嗯,有点意思,找到 菜鸟教程 的解释:

每个模块都有一个 `__name__` 属性,当其值是 `__main__` 时,表明该模块自身在运行,否则是被引入

这个 __name__ 属性还好理解,模块的保留字段(属性),但是怎么理解这个 __main__ 呢?
这里的 __main__ 可能可以理解为程序的入口函数,模块直接被入口函数调用,则其 __name__ 属性值为 __main__,否则为 模块文件名

def SayHello():
	print("Hello World")
	
def SayBye():
	print("Bye World")


SayHello()

if(__name__=="__main__"):
	print("Main")
else:
	print(__name__)

SayBye()
D:\>python Test2.py
Hello World
Test1
Bye World
Test2 First
Test2 Second

总结

本文讲了 Python 模块的一些基本特性,涉及到的知识非常粗浅,仅为记录个人的学习过程。
每每接触新工具或新语言,都有一种莫名的欣喜,乐于用旧知识来推敲,故而载之。

最后,引用 菜鸟教程 关于 模块 的一些重要解释:

  • 模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。
  • 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
  • 模块是可以导入其他模块的。在一个模块的最前面使用 import 来导入一个模块,当然这只是一个惯例,而不是强制的。

Python 入口函数(菜鸟入门)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 入口函数(菜鸟入门)

最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化。虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出优化方案,最后让 TA 去编码实现。但是程序员心理使然,什么东西都想自己琢磨
2023-01-31

Python入门-函数

< 返回索引页函数函数定义返回值函数的调用函数的参数顺序参数参数的默认值可变参数关键字参数参数的组合参数的专递函数作用域内建函数匿名函数函数注解总结练习参考函数在维基百科上函数式这样描述的:函数在数学中为两集合间的
2023-01-31

Python从菜鸟到高手(4):导入Py

在Python代码中导入模块需要使用import语句,语法结构如下:import module_name  引用模块中函数的语法如下:module_name.function_name  如果在Python程序中大量使用模块中的某些函数,那
2023-01-31

Python爬虫入门教程第七讲: 蜂鸟网

蜂鸟网图片--简介今天玩点新鲜的,使用一个新库 aiohttp ,利用它提高咱爬虫的爬取速度。安装模块常规套路pip install aiohttp运行之后等待,安装完毕,想要深造,那么官方文档必备 :https://aiohttp.rea
2023-01-31

Python入门之三角函数atan2()函数详解

描述atan2() 返回给定的 X 及 Y 坐标值的反正切值。语法以下是 atan2() 方法的语法:import math math.atan2(y, x)注意:atan2()是不能直接访问的,需要导入 math 模块,然后通过 math
2022-06-04

Oracle分析函数入门

Oracle分析函数入门
Oracle分析函数入门
2020-12-22

Python入门教程(十九)python的函数详解

这篇文章主要介绍了Python入门教程(十九)python的函数,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,需要的朋友可以参考下
2023-05-17

Python入门之三角函数sin()函数实例详解

描述 sin()返回的x弧度的正弦值。 语法 以下是sin()方法的语法:importmath math.sin(x)注意:sin()是不能直接访问的,需要导入math模块,然后通过math静态对象调用该方法。 参数 x--一个数值。 返
2022-06-04

Python入门之三角函数tan()函数实例详解

描述tan() 返回x弧度的正弦值。语法以下是 tan() 方法的语法:import math math.tan(x)注意:tan()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。参数x -- 一个数值
2022-06-04

「数据挖掘入门系列」Python快速入门

Python环境搭建本次入门系列将使用Python作为开发语言。要使用Python语言,我们先来搭建Python开发平台。我们将基于Python 2.7版本、以及Python的开发发行版本Anaconda版本来开发。Anaconda指的是一个开源的Python
「数据挖掘入门系列」Python快速入门
2021-03-07

Python入门之三角函数全解【收藏】

Python中的三角函数位于math模块内。 引入模块: import math 输出pi: import math print(math.pi) 得:3.141592653589793 math模块内还有sin、cos、tan之类的函数
2022-06-04

python入门——python数据类型

一、数据类型1、核心数据类型:数字:int, long(python3.5已经没有), float, complex, bool字符:str, unicode列表:list字典:dict元组:tuple集合:set(可变集合),frozen
2023-01-31

Python数据分析入门

本文来分享一下如何通过Python来开始数据分析。具体内容如下:数据导入导入本地的或者web端的CSV文件;数据变换;数据统计描述;假设检验单样本t检验;可视化;创建自定义函数。数据导入这是很关键的一步,为了后续的分析我们首先需要导入数据。
2023-01-31

SQL 入门教程:聚集函数

目录一、AVG() 函数二、COUNT() 函数三、MAX() 函数四、MIN() 函数五、SUM() 函数请参阅目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程我们经常需要汇总数据而不用把它们实际检索出来,为此 SQL 提供了专门的函数。使用这些函数
SQL 入门教程:聚集函数
2020-07-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录