Python入门——函数封装

  当工程量比较大时,我们可以采取“函数封装”的方法实现函数的重复使用,避免“重复造轮子”。

步骤

手动创建一个包,只需进行以下 2 步操作:

  1. 新建一个文件夹,文件夹的名称就是新建包的包名;
  2. 在该文件夹中,创建一个 init.py 文件(前后各有 2 个下划线‘_’),该文件中可以不编写任何代码。当然,也可以编写一些python初始化代码,则当有其它程序文件导入包时,会自动执行该文件中的代码。

实例:创建包my_package:(步骤如下)

  1. 在工作区下新建文件夹my_package
    不限制文件夹的存储路径,但直接在工作区下新建比较方便。

  2. 在该文件夹中添加一个init.py文件
    初始化,该文件中可以什么也不写,但是如果写了后续导入包时会自动运行该文件。

至此,包的创建完成,之后只需添加包或者模块即可。

实例:添加模块module_1

在my_package文件夹中新建文件module_1.py即可。

运行结果:

包的导入

import 包名[.模块名 [as 别名]]
from 包名 import 模块名 [as 别名]
from 包名.模块名 import 成员名 [as 别名]

【注】

  1. 用 [] 括起来的部分,是可选部分,即可以使用,也可以直接忽略。
  2. 注意,导入包的同时,会在包目录下生成一个含有 init.cpython-36.pyc 文件的 pycache 文件夹。
  3. 如果函数名相同,我们又想不改变函数名。可以通过as关键字可以更改模块名和函数名。目的是防止命名相同,产生冲突。
from module import count_letter_number as sum     # 这里的sum是将封装好的函数名count_letter_number在调用时临时更改为sum

【注】 函数如果同名,后面的函数会覆盖前面的函数;模块下的函数名与被导入模块中的函数名相同时,则会执行模块下的函数,不会执行模块中的函数。

不导入执行语句,只导入函数

if __name__ == 'main'
  把它看成一把闭加锁,使用它就相当于一把锁,把执行语句放在它下面可以阻止其它模块去执行这些内容。要想不被模块调用函数中的执行语句,就把函数名放在它下面,保护起来。

def location(x,y,xm,ym,alpha):
    
    rotation=np.array([[math.cos(alpha),math.sin(alpha)],
                      [-math.sin(alpha),math.cos(alpha)]])
    move=np.array([[x],[y]])
    xy_b=np.matmul(rotation,move)
    
    xy=np.array([[xm],[ym]])
    xy_A=xy_b+xy
    
    return xy_A
​
# 比如我们只想导入以上这一部分函数,不需要导入以下的main()函数,那么我们就把main()函数执行的返回值放在if里面.
# main()函数只能在本文件名中执行,不会被其他模块调用.
​
def main():
    axy_location=location(3,5,5,10,pi/8)
	print(axy_location)
​
if __name__ == '__main__':
    main()

【注】两个函数不能互相导入,否则会陷入死循环!

参考资料

[1] Python创建包,导入包(入门必读)
[2] python函数 – 14 函数的封装(模块)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年6月15日
下一篇 2023年6月15日

相关推荐