Python:关于类class、函数def、import和from...import的实际操作

本文介绍了Python编程中类、函数的定义与使用,以及如何在不同文件间通过import和from...import进行引用。重点讨论了函数的执行顺序、类的实例化以及import的两种方式之间的区别,包括可能遇到的变量冲突和执行错误问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你自己要写一个完整的工程文档时,你需要能对文档中的各个.py文件正确引用

同文件中的函数def和类class

这里有一个print_test.py,里面包含了:
在这里插入图片描述

先让我们分析一下:

  • 第一行是一个直接运行的print函数
  • print123()print789()是自定义函数
  • print456是一个自定义类,里面包含了一个printfunction()函数,而且此函数里面还调用了print123()函数
  • 最下方是本文件的运行函数,而且里面也有一个print函数

当我们直接运行本文件时,输出是什么呢:
在这里插入图片描述
即:

  • 第一个行的print函数、运行函数里面的print函数以及自定义的print123()都被运行了,
  • print789()print456这个类,没有被运行

请注意输出的顺序,虽然都被运行了,但是是有顺序区分的。

从结果来看,可以得到这样的结论

  • 函数从上到下开始运行,所以第一行的print函数第一个运行并输出
  • 自定义函数需要在运行函数中进行执行,才能运行,否则就不会运行
  • 自定义的类同上,不能自行运行

在其他文件中使用import和from…import

import即从一个**.py**(或者称之为)里面,导入一些东西,这些东西可能是函数def、类class或者实例变量。

现有另外一个文件,testtest.py

在这里插入图片描述

使用from…import :

前两行的意思是,从module这个文件夹中的print_test文件中import 函数print789()和类print456

运行得到结果:
在这里插入图片描述

  • 第一个输出 out of function是print_test.py中最外层中执行的函数的输出结果
  • 789是运行函数中执行print789()输出的结果
  • 注意这里的123和printfunction456从哪里来呢?
    • 123是执行了print456类中的printfunction函数中对print123()函数调用所输出的结果
    • 而printfunction456是这个print456类中的printfunction函数的输出结果
    • 即此时的print345这个类被正确调用并且执行了
    • 请注意,正确的类的使用必须提前对类进行实例化,否则会报错,文件中的a=print456()就是实例化,然后再使用printfunction()函数,而不能直接print456.printfunction(),这样会报错

import :
当我们将from import换成import会发生什么呢:
在这里插入图片描述
运行报错如下:
在这里插入图片描述
竟然找不到这些函数和类了!为啥啊?

原因是,我们现有代码是按着from…import具体函数来写的,但是当我们直接import .py 文件的时候,我们并不能直接使用函数

而是应该要在使用函数前加上.py文件的名字,作为限定,在这里就是module.print_test,而完整地应用应该是:
在这里插入图片描述
这时候就能正常运行了!

直接import和from…import的区别就是

  • 直接import想要使用函数,需要在前面加限定,而这个限定的帮助就是在新的文件中不容易产生互相冲突的变量名
  • from import就是直接将一个.py 库中的具体函数拿来用,可能会产生变量重名的情况,而且在多层的嵌套结构下,可能会出现import错误

还有一种情况,是 from…import * ,这代表从库中导入所有东西,注意是所有。但是这就会导致可能存在变量重名的问题,一般来说,尽量只对已经确定好不会产生冲突的情况下进行此类操作。

这时候可以直接使用库中的函数,也不会报错
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值