Python编程之顺序执行与程序的主入口详解

目录
  • 前言
  • 1.顺序执行(了解)
  • 2.程序主入口(熟悉)
  • 总结

前言

本章将会讲解Python编程中的顺序执行与程序的主入口。

1.顺序执行(了解)

Python代码在执行过程中,遵循下面的基本原则:

  1. 普通语句,直接执行;
  2. 碰到函数,将函数体载入内存,并不直接执行
  3. 碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
  4. 碰到if、for等控制语句,按相应控制流程执行
  5. 碰到@,break,continue等,按规定语法执行
  6. 碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码
# #对于普通语句,代码从上之下执行
# print("hello world")
# print("hello world")
# print("hello world")

#此时代码从上之下执行,但是函数只有在调用时才会执行

# def func_name():
#     print("i  am  func name")
# func_name()

# class MyClass:
#     print("i am myclass")
#
#     def my_text(self):
#         print("i am mytest ")
#
#
# d = MyClass()
# d.my_test()

2.程序主入口(熟悉)

一个 .py,除了可以被直接运行外,还可以作为模块, 被其他 .py文件导入。不管是直接运行还是被导 入,.py 文件的最顶层代码都会被运行( Python 用缩 进来区分代码层次)。 但是当一个 .py 文件作为模块被导入时,我们可能不 希望一部分代码被运行。那么就可以将这部分代码的 调用写在主程序中。

def func_one():
    print("func_one")

def func_two():
    print("func_two")

func_one()

#程序的主入口
if __name__ == '__main__':
    func_two()
#当我导入了demo19之后,运行demo13的话,会执行demo3内部的代码
import demo19
#执行demo4,竟然只打印输出了func_one

再来解释下

所以上面代码 if 的意思就是:如果运行的程序是你自己,那么就 print....

假设运行的是 xiaoming.py,那么就会执行主函数

假设运行的是 xiaohong.py,即使 xiaohong 导入了 xiaoming,也不会执行 xiaoming.py 里面的主函数(main 函数)

是否一定需要执行入口(主函数)

不一定

假设没有主函数,那么运行 xiaoming.py 时,就会至上而下,逐行运行 xiaoming.py 的所有代码

执行入口的意义

将业务代码写在主函数上面,主函数用来调用有业务代码,代码结构整洁
向 Java、C、Golang 看齐,他们都是要求一个程序必须有一个主执行入口才能正确运行

总结

到此这篇关于Python编程之顺序执行与程序的主入口的文章就介绍到这了,更多相关Python顺序执行与程序主入口内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python顺序执行多个py文件的方法

    假如我要执行code目录下的python程序,假设该目录下有1.py,2.py,3.py,4.py四个文件,但是我想执行1.py,2.py,4.py,则可在该目录下创建一个python文件,代码如下: import os os.system("python ./1.py") os.system("python ./2.py") os.system("python ./4.py") 若想指定输出到某个文件,这里我指定输出到log.txt,log.t

  • 打印出python 当前全局变量和入口参数的所有属性

    def cndebug(obj=False): """ Author : Nemon Update : 2009.7.1 TO use : cndebug(obj) or cndebug() or MyObject.debug=cndebug License: GPL """ print('='*80) print('='*30 + ' GLOBAL VARIABLES ' +'='*30) print('='*80) g=globals() f

  • Python编程之顺序执行与程序的主入口详解

    目录 前言 1.顺序执行(了解) 2.程序主入口(熟悉) 总结 前言 本章将会讲解Python编程中的顺序执行与程序的主入口. 1.顺序执行(了解) Python代码在执行过程中,遵循下面的基本原则: 普通语句,直接执行: 碰到函数,将函数体载入内存,并不直接执行 碰到类,执行类内部的普通语句,但是类的方法只载入,不执行 碰到if.for等控制语句,按相应控制流程执行 碰到@,break,continue等,按规定语法执行 碰到函数.方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码

  • Shell执行/调用Java/Jar程序例子的实例详解

    Shell执行/调用Java/Jar程序例子的实例详解 前言: 最近要写一个独立的Java程序去监控Hadoop和Oozie,通过Shell去调用.写代码到现在也4年多了,貌似就从来没在生产环境中写过一个独立的Java程序,不是部署到Tomcat就是直接丢给Hadoop.于是参考Hadoop等开源环境,自己写了一个demo,并且可以通过Ant打包生成可运行的程序.所以这里有三步:Java程序,Shell,Ant      1.首先建立Java程序,由于是例子,所以这里很简单,只是输出传入参数的个

  • Python中关于元组 集合 字符串 函数 异常处理的全面详解

    目录 元组 集合 字符串 1.字符串的驻留机制 2.常用操作 函数 1.函数的优点: 2.函数的创建:def 函数名([输入参数]) 3.函数的参数传递: 4.函数的返回值: 5.函数的参数定义: 6.变量的作用区域 7.递归函数:函数体内套用该函数本身 8.将函数存储在模块中 9.函数编写指南: Bug 1.Bug常见类型 2.常见异常类型 3.python异常处理机制 pycharm开发环境的调试 编程思想 (1)两种编程思想 (2)类和对象的创建 元组 元组是不可变序列 多任务环境下,同时

  • Android Studio 中运行 groovy 程序的方法图文详解

    Groovy简介 Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.由于其运行在 JVM 上的特性,Groovy也可以使用其他非Java语言编写的库. Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言.使用该种语言不必编写过多的代码,同时又具有闭包和动态语

  • 浅谈Python生成器generator之next和send的运行流程(详解)

    对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数. 然后第二个next调用,进入生成器函数后,从yield语句的下一句语句(第5行)开始执行,然后重新运行到yield语句,执行后,跳出生成器函数,后面再次调用next,依次类推. 下面是一个列子: def consumer(): r = 'here' for i in xrange(3): yield r r = '200 OK'+ str(i)

  • 基于asp.net MVC 应用程序的生命周期(详解)

    首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的生命周期,从一个控件到另一个控件是怎样被处理的.我们还会详细介绍一下整个请求的生命周期中,用到的相关组件.因为在平常的开发过程中,我们可能知道怎样去使用MVC框架来处理相关的请求,大部分的时候我们只是在controller和action方法之间做相关的处理,对于真正内在的运行机制可能不是很了解.其实

  • 基于Python中单例模式的几种实现方式及优化详解

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪

  • python脚本调用iftop 统计业务应用流量的思路详解

    因公司服务器上部署应用较多,在有大并发访问.业务逻辑有问题的情况下反复互相调用或者有异常流量访问的时候,需要对业务应用进行故障定位,所以利用python调用iftop命令来获取应用进程流量,结合zabbix,可帮助定位分析问题.,以下是脚本内容,大概思路是: 利用iftop命令 iftop -t -P -N -n -s 2 来获取流量信息 对获取的流量信息进行处理,单位换算,同一个应用程序的所有链接流量进行合计(因为一个应用会有很多链接,每一个链接都有流量,全部相加即可得出这个应用的总流量) #

  • python TCP Socket的粘包和分包的处理详解

    概述 在进行TCP Socket开发时,都需要处理数据包粘包和分包的情况.本文详细讲解解决该问题的步骤.使用的语言是Python.实际上解决该问题很简单,在应用层下,定义一个协议:消息头部+消息长度+消息正文即可. 那什么是粘包和分包呢? 关于分包和粘包 粘包:发送方发送两个字符串"hello"+"world",接收方却一次性接收到了"helloworld". 分包:发送方发送字符串"helloworld",接收方却接收到了两

  • 对python 多线程中的守护线程与join的用法详解

    多线程:在同一个时间做多件事 守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.setDaemon(True),要在thread.start()之前设置,默认是false的,也就是主线程结束时,子线程依然在执行. thread.join():在子线程完成运行之前,该子线程的父线程(一般就是主线程)将一直存在,也就是被阻塞 实例: #!/usr/bin/python # encoding: utf-8 import threading fro

随机推荐