python 代码执行顺序

📢博客主页:https://blog.youkuaiyun.com/mukes
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!
📢本文由 mukes 原创,首发于 csdn

py文件单独执行时,按照自上而下的顺序:
首先执行没有缩进的代码,但是 中的代码和 函数 中的代码不会执行 (除非被调用)
dog.py 代码如下:

# - - coding: utf-8 --
class Dog(): # 类
    """一次模拟小狗的简单尝试"""
    def __init__(self,name,age):
        """初始化属性 name 和 age"""
        self.name = name
        self.age = age
		print('打印 1')
		
print("打印 3")

def dog_info(): # 函数
    print("打印 2")

看看上面的代码,其中 函数 并没有被调用,因此执行的结果是

打印 3

其中 中的打印语句和 函数 中的打印语句都没有执行。
而当类和函数被调用时,代码如下:

# - - coding: utf-8 --
class Dog(): #类
    """一次模拟小狗的简单尝试"""
    def __init__(self,name,age):
        """初始化属性 name 和 age"""
        self.name = name
        self.age = age
        print('打印 1')
        
print("打印 3")

def dog_info():
    print("打印 2")
my_dog = Dog('willie',6) # 调用 Dog 类
dog_info() # 调用 dog_info 函数

执行结果如下:

打印 3 # print 语句的结果
打印 1 # 类的调用的结果
打印 2 # 函数的调用的结果

如果你把上面的调用再调换一下顺序,则又是另外的结果了。

ps:如果我的博文对你有帮助,记得给我点一个赞哦~(゜ - ゜) つロ
如有疑问,欢迎留言讨论

pps:如果你想知道我是如何查找优质开源项目的,欢迎点击下方链接阅读我的最新博文
原创 GitHub 搜索技巧 - 带你一步步找优质项目 带 gif 演示图

### Python代码执行流程和运行顺序详解 #### 解析文件导入与模块加载 当Python程序启动时,解释器会先解析并编译整个脚本到字节码。对于被`import`语句引入的其他模块,同样遵循这一过程——即先读取再编译成内部表示形式以便后续使用[^1]。 #### 主程序入口判断 在每个`.py`文件顶部存在一段特殊的条件分支: ```python if __name__ == '__main__': pass # 此处放置仅当作为主程序运行才被执行的部分 ``` 这段代码用于区分当前文件是以独立脚本方式还是作为一个库的一部分而被执行。只有当该文件直接由命令行或其他手段显式调用时才会进入此分支;如果是通过`import`指令间接引用,则不会触发这部分逻辑。 #### 循环控制结构的影响 关于循环体内的操作次序,在遇到诸如`for`或`while`这样的迭代型语句时,每次迭代都会重新评估表达式的真假值以决定是否继续下一轮处理。具体来说,`for`遍历序列中的每一个元素直至结束,而`while`则持续检查给定条件直到不再满足为止[^2]。 #### 测试框架下的特殊行为 针对单元测试场景下的函数排列规则,`unittest`框架默认按照ASCII编码升序自动安排各个TestCase实例的方法调用次序。这意味着定义于类成员间的不同test case之间不存在固定的先后关系,除非特别指定依赖属性或者利用内置装饰器调整优先级[^3]。 #### 装饰器的应用时机 考虑带有多个层次修饰符的情况,实际应用中往往涉及多层嵌套的wrapper封装模式。此时最靠近目标对象的那个decorator最先生效,并依次向外传递最终形成的增强版callable实体供外部访问。例如下面的例子展示了两个简单装饰器叠加后的效果[^4]: ```python def decorator_a(fn): def inner(): print('A before') fn() print('A after') return inner def decorator_b(fn): def inner(): print('B before') fn() print('B after') return inner @decorator_a @decorator_b def greet(): print('Hello!') greet() # 输出结果如下: # A before # B before # Hello! # B after # A after ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值